迁移后我是否需要更新model.rb.

时间:2013-07-10 14:06:59

标签: ruby-on-rails ruby-on-rails-3

当我在Users表上执行迁移(只是添加一列)时,是否需要在我的模型文件夹的attr_accessible中手动将新列添加到user.rb

2 个答案:

答案 0 :(得分:5)

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

如果您未在模型中将新列添加到attr_accessible,则会获得ActiveModel::MassAssignmentSecurity::Error

在Rails 4中attr_accessible被提取到宝石中。

Rails 4使用strong_paramters代替。这更灵活,并将过滤移动到控制器级别。

答案 1 :(得分:0)

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