提交 fdb7f84e 编写于 作者: E Emilio Tagua

Remove deprecated block usage in composed_of.

上级 7710a8cb
...@@ -190,7 +190,7 @@ module ClassMethods ...@@ -190,7 +190,7 @@ module ClassMethods
# :constructor => Proc.new { |ip| IPAddr.new(ip, Socket::AF_INET) }, # :constructor => Proc.new { |ip| IPAddr.new(ip, Socket::AF_INET) },
# :converter => Proc.new { |ip| ip.is_a?(Integer) ? IPAddr.new(ip, Socket::AF_INET) : IPAddr.new(ip.to_s) } # :converter => Proc.new { |ip| ip.is_a?(Integer) ? IPAddr.new(ip, Socket::AF_INET) : IPAddr.new(ip.to_s) }
# #
def composed_of(part_id, options = {}, &block) def composed_of(part_id, options = {})
options.assert_valid_keys(:class_name, :mapping, :allow_nil, :constructor, :converter) options.assert_valid_keys(:class_name, :mapping, :allow_nil, :constructor, :converter)
name = part_id.id2name name = part_id.id2name
...@@ -199,9 +199,7 @@ def composed_of(part_id, options = {}, &block) ...@@ -199,9 +199,7 @@ def composed_of(part_id, options = {}, &block)
mapping = [ mapping ] unless mapping.first.is_a?(Array) mapping = [ mapping ] unless mapping.first.is_a?(Array)
allow_nil = options[:allow_nil] || false allow_nil = options[:allow_nil] || false
constructor = options[:constructor] || :new constructor = options[:constructor] || :new
converter = options[:converter] || block converter = options[:converter]
ActiveSupport::Deprecation.warn('The conversion block has been deprecated, use the :converter option instead.', caller) if block_given?
reader_method(name, class_name, mapping, allow_nil, constructor) reader_method(name, class_name, mapping, allow_nil, constructor)
writer_method(name, class_name, mapping, allow_nil, converter) writer_method(name, class_name, mapping, allow_nil, converter)
......
...@@ -121,34 +121,6 @@ def test_custom_converter ...@@ -121,34 +121,6 @@ def test_custom_converter
end end
end end
class DeprecatedAggregationsTest < ActiveRecord::TestCase
class Person < ActiveRecord::Base; end
def test_conversion_block_is_deprecated
assert_deprecated 'conversion block has been deprecated' do
Person.composed_of(:balance, :class_name => "Money", :mapping => %w(balance amount)) { |balance| balance.to_money }
end
end
def test_conversion_block_used_when_converter_option_is_nil
assert_deprecated 'conversion block has been deprecated' do
Person.composed_of(:balance, :class_name => "Money", :mapping => %w(balance amount)) { |balance| balance.to_money }
end
assert_raise(NoMethodError) { Person.new.balance = 5 }
end
def test_converter_option_overrides_conversion_block
assert_deprecated 'conversion block has been deprecated' do
Person.composed_of(:balance, :class_name => "Money", :mapping => %w(balance amount), :converter => Proc.new { |balance| Money.new(balance) }) { |balance| balance.to_money }
end
person = Person.new
assert_nothing_raised { person.balance = 5 }
assert_equal 5, person.balance.amount
assert_kind_of Money, person.balance
end
end
class OverridingAggregationsTest < ActiveRecord::TestCase class OverridingAggregationsTest < ActiveRecord::TestCase
class Name; end class Name; end
class DifferentName; end class DifferentName; end
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册