【发布时间】:2012-05-13 20:25:37
【问题描述】:
如果我尝试执行以下代码:
hassle = rota.hassles.create(:sender => user1, :receiver => user2, :type => "sms")
我得到以下错误:
Failure/Error: hassle = rota.hassles.create(:sender => user1, :receiver => user2, :type => "sms")
ActiveModel::MassAssignmentSecurity::Error:
Can't mass-assign protected attributes: type
我不确定这意味着什么。我已将 :type 设为强制,所以如果我删除它,我会收到一个 sql 错误。
【问题讨论】:
-
STI 的 rails 默认使用“type”列。最好的解决方案是将类型列重命名为其他名称。不推荐的解决方法是添加模型文件 self.inheritance_column = :some_other_column_that_might_not_exists
-
是的 - 有关解决使用“类型”列的 STI 问题的信息,请参阅此内容:stackoverflow.com/questions/7134559/…(尽管更好的选择可能是更改列的名称)。跨度>
-
是的 - 我遇到了这个问题。更改了列名。谢谢!