我最近遇到了一个问题,记录被标记为只读。查看文档我发现了这个:
“通过具有捎带属性的联接加载的记录将被标记为只读,因为它们无法保存。”
为什么不呢?我的模型如下所示:class MailAccount
belongs_to :account, :class_name => "UserAccount"
named_scope :active, :joins => :account,
:conditions => "user_accounts.archived_at IS NULL"
end
我发现没有理由无法保存使用此命名范围检索的加载模型。有什么想法吗?
最佳答案
事实证明,我必须将 :select => "mail_accounts.*"
添加到范围,否则查询会将 user_accounts
中的属性存储在 MailAccount
对象,导致其无法保存。
所以正确使用的代码是:
class MailAccount
belongs_to :account, :class_name => "UserAccount"
named_scope :active, :joins => :account,
:conditions => "user_accounts.archived_at IS NULL",
:select => "mail_accounts.*"
end
关于ruby-on-rails - 为什么带有piggy-back属性的记录无法保存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3138687/