在`select`之后尝试保存时出现`MissingAttributeError`

时间:2014-07-18 20:45:36

标签: ruby-on-rails-4

这适用于rails 3.2:

replies = Reply.select([:id, :reply]).limit 30
replies.first.account # nil
replies.first.account = Account.first
replies.first.save #this works, it updates account on db even when was not included in select

但是当我试图在rails 4上做到这一点时,我收到了:

ActiveModel::MissingAttributeError:

如果我不使用select检索属性,则无法保存属性吗?

1 个答案:

答案 0 :(得分:0)

来自guides

"请注意,因为这也意味着您只使用您选择的字段初始化模型对象。如果您尝试访问不在初始化记录中的字段,您将收到:ActiveModel :: MissingAttributeError:missing属性:"

因此,您可能在验证或回调中引用了缺少的属性。

例如:如果你有一个名为' title'在您的回复模型上进行状态验证,然后当您尝试保存已初始化为的回复:

#<Reply id: 1, reply: "reply"> 

您将收到标题的MissingAttributeError,因为它不是您初始化对象的一部分。