用于 attr_accessible/protected 的 Rails 3 配置设置
Posted
技术标签:
【中文标题】用于 attr_accessible/protected 的 Rails 3 配置设置【英文标题】:Rails 3 config setting for attr_accessible/protected 【发布时间】:2012-03-29 13:02:56 【问题描述】:我刚刚花了很长时间尝试解决模型中的虚拟属性问题。原来我只是忘记在我的模型中将它添加到 attr_accesible 中。当然,我应该更早地抓住它,或者更好地开始整个努力,首先将它添加到 attr_accessible 中。
为了防止这种情况再次发生,如果我尝试批量分配某些内容并在它受到保护/无法访问时对其进行验证,是否有一个配置设置可以标记为在开发中引发异常?我知道我可以使用 set config.active_record.whitelist_attributes = true
来要求所有人加入白名单,但我的问题更多的是基于单个属性。
例如,如果我有一个带有 attr_accessible :name 的模型然后添加 :nickname(虚拟或非虚拟),则上面的行不会警告我,并尝试批量分配它以检查存在 => true。我希望它警告我,我试图通过批量分配来验证受保护的属性。
【问题讨论】:
【参考方案1】:Rails 3.2 有一个配置选项可以在这种情况下引发ActiveModel::MassAssignmentSecurity::Error
config.active_record.mass_assignment_sanitizer = :strict
参见Rails 3.2 release notes 和commit in Rails
【讨论】:
对于 Rails gist.github.com/2027920 rails 3.1 确实是我所在的位置。谢谢。以上是关于用于 attr_accessible/protected 的 Rails 3 配置设置的主要内容,如果未能解决你的问题,请参考以下文章
RSA非对称加密,私钥用于签名公钥用于验签;公钥用于加密私钥用于解密
Cas(用于身份验证)+ OpenLDAP(用于用户名、密码+角色和权限)+ Apache Shiro(用于授权)