mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
delegate method should treat :prefix => false same as :prefix => nil
[#5375 state:resolved] Signed-off-by: José Valim <jose.valim@gmail.com>
This commit is contained in:
parent
9a6e3ae763
commit
cacb44874f
2 changed files with 14 additions and 1 deletions
|
@ -113,7 +113,7 @@ class Module
|
|||
raise ArgumentError, "Can only automatically set the delegation prefix when delegating to a method."
|
||||
end
|
||||
|
||||
prefix = options[:prefix] && "#{options[:prefix] == true ? to : options[:prefix]}_"
|
||||
prefix = options[:prefix] && "#{options[:prefix] == true ? to : options[:prefix]}_" || ''
|
||||
|
||||
file, line = caller.first.split(':', 2)
|
||||
line = line.to_i
|
||||
|
|
|
@ -47,6 +47,14 @@ Project = Struct.new(:description, :person) do
|
|||
delegate :to_f, :to => :description, :allow_nil => true
|
||||
end
|
||||
|
||||
Developer = Struct.new(:client) do
|
||||
delegate :name, :to => :client, :prefix => nil
|
||||
end
|
||||
|
||||
Tester = Struct.new(:client) do
|
||||
delegate :name, :to => :client, :prefix => false
|
||||
end
|
||||
|
||||
class Name
|
||||
delegate :upcase, :to => :@full_name
|
||||
|
||||
|
@ -97,6 +105,11 @@ class ModuleTest < Test::Unit::TestCase
|
|||
assert_equal invoice.customer_city, "Chicago"
|
||||
end
|
||||
|
||||
def test_delegation_prefix_with_nil_or_false
|
||||
assert_equal Developer.new(@david).name, "David"
|
||||
assert_equal Tester.new(@david).name, "David"
|
||||
end
|
||||
|
||||
def test_delegation_prefix_with_instance_variable
|
||||
assert_raise ArgumentError do
|
||||
Class.new do
|
||||
|
|
Loading…
Reference in a new issue