我正在研究动态表单生成器。我注意到奇怪的行为
class Model
include Mongoid::Document
field :name, :type => String
end
model = Model.new
model.name = "My Name"
model.surname = "My Surname"
#=> NoMethodError: undefined method `surname='
但是
model = Model.new( :name => "My Name", :surname => "My Surname" )
#=> ok
model.surname
#=> "My Surname"
model.surname = "New Surname"
#=> "New Surname"
有人可以解释为什么我可以通过批量分配创建新字段而不能通过属性添加字段吗?
最佳答案
根据 Mongoid 文档,getter/setter 方法(例如 .surname
)只有在该字段存在于文档中时才会起作用(这就是为什么当您创建一个新的 Model
与字段,它的工作原理)。
您仍然可以像这样设置/读取字段:
model[:surname]
model.read_attribute(:surname)
model[:surname] = "My Surname"
model.write_attribute(:surname, "My Surname")
关于ruby-on-rails - Mongoid 字段问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6684182/