ruby-on-rails - Mongoid 字段问题

标签 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"

有人可以解释为什么我可以通过批量分配创建新字段而不能通过属性添加字段吗?

最佳答案

根据 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

关于ruby-on-rails - Mongoid 字段问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6684182/

相关文章:

mysql - 在 Rails 中迁移期间重命名列时出错

ruby-on-rails - 是什么导致了这个 rails ioerror closed stream?

ruby-on-rails - zeus rspec 无法包含所需的文件,但单独使用 rspec 就可以了

ruby - 如何将 SHA1 哈希字符串截断为 32 位字符串

mongodb - 如何检查数据库(mongodb)中是否存在用户名和密码

mongodb - Mongoimport 合并/更新字段

ruby-on-rails - Rails 中公共(public)目录中的文件 - Errno::ENOENT (没有这样的文件或目录@ rb_sysopen

ruby-on-rails - 计算 ruby​​ 中的可用周数

python - Tornado 不接受POST方法

ruby-on-rails - rails : undefined method error when move codes from view to helper file