当我在Users表上执行迁移(只是添加一列)时,是否需要在我的模型文件夹的attr_accessible
中手动将新列添加到user.rb
?
答案 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
的缩写。