1

当我在我的用户表上执行迁移(仅添加一列)时,我是否需要手动将新列添加到attr_accessibleuser.rb的模型文件夹中?

4

2 回答 2

5

是的你是; 也就是说,如果您打算在表单中使用新列或在其上设置属性。

如果您不将新列添加到attr_accessible模型中,您将获得一个ActiveModel::MassAssignmentSecurity::Error.

在 Rails 4attr_accessible中被提取到一个 Gem 中。

Rails 4strong_paramters改为使用。这更加灵活,并将过滤移至控制器级别。

于 2013-07-10T14:08:38.663 回答
0

取决于您是否希望它可用于批量分配。 attr_accessible属性基本上从用户提交的表单中获取它们的值,这些表单的内容基本上只是转储到模型的数据库表中。这对于姓名、电子邮件等属性很好。但是,对于像admin?这样的属性,1 表示真或 0 表示假,您不希望用户能够在表单中设置它。否则,当用户注册时,他只需编辑他身边的 html 以添加一个名为“admin”的字段,将其值设置为 1,当他提交表单时,他的用户的 admin 将设置为 1,并且繁荣,他是一名管理员。显然这是一个主要的安全问题,因此admin您绝对不想包含在attr_accessible. 你可以想到attr_accessible作为attr_accessible_for_mass_assignment_by_users.

于 2013-07-10T14:25:45.837 回答