我遇到了has_one
关联与Object
方法覆盖相结合的一个奇怪的问题。有人可以向我解释发生了什么事吗?Rails的ActiveRecord has_one关联与对象方法覆盖
这是怎么一回事呢:
我有Supplier
和Account
之间的has_one
关系,就像在Rails的指南中使用的has_one
例子的例子。
供应商:
class Supplier < ActiveRecord::Base
validates :name, :presence => true
has_one :account
nilify_blanks
end
帐户:
class Account < ActiveRecord::Base
belongs_to :supplier
validates :supplier_id, :presence => true
nilify_blanks
def foo
puts 'in account'
end
def to_s
puts 'in account'
end
end
我也有Object
的方法foo
如下:
class Object
def foo
puts 'in object'
end
end
当我打电话:
Supplier#account#to_s
我 '帐户' 获得
当我打电话:
Supplier#account#foo
我得到 '的对象'
,而我希望它 '帐户'
打印有没有人有任何线索为什么会发生这种情况?这是Rails ActiveRecord中的错误吗?
在此先感谢
附:如果你愿意,你可以得到一个完全成熟的应用程序,从这里演示该问题:
https://github.com/pmatsinopoulos/test_association_and_object_method_override.git
实际帐户对象? –
@NarenSisodiya是的。它具有相同的行为。 –