Монгольские поля - PullRequest
       6

Монгольские поля

1 голос
/ 13 июля 2011

Я работаю над генератором динамических форм. И я заметил странное поведение

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 Ответ

3 голосов
/ 13 июля 2011

В соответствии с документацией Mongoid методы получения / установки (например, .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

...