我有这堂课:
class User
include Mongoid::Document
field :revenues, :type => Integer, :default => nil
attr_accessible :revenues
#now method
def revenues
return 1
end
end
为什么在控制台中我得到1
而不是nil
?
1.9.3-p125 :002 > u.revenues
=> 1
哪个有优先权,方法还是领域?如何创建一个具有与字段相同功能的方法?
答案 0 :(得分:0)
field
宏在Mongoid :: Document中定义。它既不是Ruby的合成特性,也不是Rails的合成特性。
您的代码发生了以下情况:
field
函数会为您创建一些方法,其中一个方法称为revenues
。revenues
的方法时,您实际上会覆盖以前定义的方法,因此无法使用它。简短回答:我不了解Mongoid的拉链,但即使你再次定义了一个名为revenues
的方法,你的字段仍然存在。唯一的缺点是你不能再通过调用myUser.revenues
来访问它了。
尝试进行测试:使用符号some_user[:revenues]
访问您的字段,看看会发生什么:)
祝你好运