mirror of
https://github.com/github/rails.git
synced 2026-01-29 08:18:03 -05:00
Added support for decimal types. Closes #6676.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@5670 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
*SVN*
|
||||
|
||||
* Added support for decimal types. Closes #6676. [Kent Sibilev]
|
||||
|
||||
* Removed deprecated end_form_tag helper. [Kent Sibilev]
|
||||
|
||||
* Removed deprecated @request and @response usages. [Kent Sibilev]
|
||||
|
||||
@@ -95,6 +95,8 @@ module ActionWebService # :nodoc:
|
||||
end
|
||||
when :float
|
||||
Float(value)
|
||||
when :decimal
|
||||
BigDecimal(value.to_s)
|
||||
when :time
|
||||
value = "%s/%s/%s %s:%s:%s" % value.values_at(*%w[2 3 1 4 5 6]) if value.kind_of?(Hash)
|
||||
value.kind_of?(Time) ? value : Time.parse(value.to_s)
|
||||
|
||||
@@ -118,18 +118,12 @@ module ActionWebService
|
||||
end
|
||||
|
||||
def register_static_factories
|
||||
@registry.add(ActionWebService::Base64,
|
||||
SOAP::SOAPBase64,
|
||||
SoapBase64Factory.new,
|
||||
nil)
|
||||
@registry.add(ActionWebService::Base64, SOAP::SOAPBase64, SoapBase64Factory.new, nil)
|
||||
mapping = @registry.find_mapped_soap_class(ActionWebService::Base64)
|
||||
@type2binding[ActionWebService::Base64] =
|
||||
SoapBinding.new(self, SOAP::SOAPBase64::Type,
|
||||
ActionWebService::Base64, mapping)
|
||||
@registry.add(Array,
|
||||
SOAP::SOAPArray,
|
||||
SoapTypedArrayFactory.new,
|
||||
nil)
|
||||
SoapBinding.new(self, SOAP::SOAPBase64::Type, ActionWebService::Base64, mapping)
|
||||
@registry.add(Array, SOAP::SOAPArray, SoapTypedArrayFactory.new, nil)
|
||||
@registry.add(::BigDecimal, SOAP::SOAPDouble, SOAP::Mapping::Registry::BasetypeFactory, {:derived_class => true})
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -5,6 +5,16 @@ module XMLRPC # :nodoc:
|
||||
class FaultException # :nodoc:
|
||||
alias :message :faultString
|
||||
end
|
||||
|
||||
class Create
|
||||
def wrong_type(value)
|
||||
if BigDecimal === value
|
||||
[true, value.to_f]
|
||||
else
|
||||
false
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
module ActionWebService # :nodoc:
|
||||
|
||||
@@ -61,6 +61,8 @@ module ActionWebService # :nodoc:
|
||||
:bool
|
||||
when :float, :double
|
||||
:float
|
||||
when :decimal
|
||||
:decimal
|
||||
when :time, :timestamp
|
||||
:time
|
||||
when :datetime
|
||||
@@ -117,6 +119,8 @@ module ActionWebService # :nodoc:
|
||||
TrueClass
|
||||
when :float
|
||||
Float
|
||||
when :decimal
|
||||
BigDecimal
|
||||
when :time
|
||||
Time
|
||||
when :date
|
||||
|
||||
@@ -126,6 +126,7 @@ class TC_ClientSoap < Test::Unit::TestCase
|
||||
assert user.active?
|
||||
assert_kind_of Date, user.created_on
|
||||
assert_equal Date.today, user.created_on
|
||||
assert_equal BigDecimal('12.2'), user.balance
|
||||
end
|
||||
|
||||
def test_with_model
|
||||
|
||||
@@ -125,6 +125,7 @@ class TC_ClientXmlRpc < Test::Unit::TestCase
|
||||
assert user.active?
|
||||
assert_kind_of Time, user.created_on
|
||||
assert_equal Time.utc(Time.now.year, Time.now.month, Time.now.day), user.created_on
|
||||
assert_equal BigDecimal('12.2'), user.balance
|
||||
end
|
||||
|
||||
def test_with_model
|
||||
|
||||
@@ -2,6 +2,7 @@ CREATE TABLE `users` (
|
||||
`id` int(11) NOT NULL auto_increment,
|
||||
`name` varchar(30) default NULL,
|
||||
`active` tinyint(4) default NULL,
|
||||
`balance` decimal(5, 2) default NULL,
|
||||
`created_on` date default NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
2
actionwebservice/test/fixtures/users.yml
vendored
2
actionwebservice/test/fixtures/users.yml
vendored
@@ -2,9 +2,11 @@ user1:
|
||||
id: 1
|
||||
name: Kent
|
||||
active: 1
|
||||
balance: 12.2
|
||||
created_on: <%= Date.today %>
|
||||
user2:
|
||||
id: 2
|
||||
name: David
|
||||
active: 1
|
||||
balance: 16.4
|
||||
created_on: <%= Date.today %>
|
||||
|
||||
Reference in New Issue
Block a user