Mongoid字段问题

时间:2011-07-13 19:04:10

标签: ruby-on-rails ruby mongodb mongoid

我正在研究动态表单生成器。而且我注意到了奇怪的行为

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"

有人可以解释为什么我可以创建具有质量赋值的新字段,并且不能通过属性添加字段吗?

1 个答案:

答案 0 :(得分:3)

根据Mongoid文档,getter / setter方法(例如.surname)仅在文档中存在该字段时才有效(这就是为什么当您使用该字段创建新的Model时,它作品)。

你仍然可以这样设置/读取字段:

model[:surname]
model.read_attribute(:surname)
model[:surname] = "My Surname"
model.write_attribute(:surname, "My Surname")

请参阅http://mongoid.org/docs/documents/dynamic.html