这适用于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
检索属性,则无法保存属性吗?
答案 0 :(得分:0)
来自guides:
"请注意,因为这也意味着您只使用您选择的字段初始化模型对象。如果您尝试访问不在初始化记录中的字段,您将收到:ActiveModel :: MissingAttributeError:missing属性:"
因此,您可能在验证或回调中引用了缺少的属性。
例如:如果你有一个名为' title'在您的回复模型上进行状态验证,然后当您尝试保存已初始化为的回复:
#<Reply id: 1, reply: "reply">
您将收到标题的MissingAttributeError,因为它不是您初始化对象的一部分。