我的用户模型中有以下代码:
attr_protected :email我正在尝试创建一个新的user对象,但是我得到了一个批量赋值保护的错误,代码如下。
user = User.new(
:first_name => signup.first_name,
:last_name => signup.last_name,
:email => signup.email,
:birthday => signup.birthday,
:encrypted_password => signup.encrypted_password,
:salt => signup.salt
)有谁知道我如何绕过attr_protected,让这段代码正常工作,并为电子邮件赋值?
谢谢。
发布于 2010-09-28 10:50:59
user = User.new(
:first_name => signup.first_name,
:last_name => signup.last_name,
:birthday => signup.birthday,
:encrypted_password => signup.encrypted_password,
:salt => signup.salt
)
user.email = signup.email发布于 2010-09-28 12:01:16
我今天晚上刚刚写了一篇文章来解决这个问题。我计划本周晚些时候在我做完演讲后将它添加到RubyGems.org中。在此期间,请随时签出代码。http://github.com/beerlington/sudo_attributes
使用gem,您的代码将更改为:
user = User.sudo_new(
:first_name => signup.first_name,
:last_name => signup.last_name,
:email => signup.email,
:birthday => signup.birthday,
:encrypted_password => signup.encrypted_password,
:salt => signup.salt
)如果要保存实例,也可以使用sudo_create()
发布于 2013-07-23 08:25:03
如果您知道哈希是安全的,那么update_attributes现在允许您覆盖保护,比如在内部使用时,您设置的字段不是来自用户可控制的哈希。
user = User.new({
first_name: signup.first_name,
last_name: signup.last_name,
email: signup.email,
birthday: signup.birthday,
encrypted_password: signup.encrypted_password,
salt: signup.salt
}, {without_protection: true})您可能还想考虑使用roles
User.new(params, as: :admin)https://stackoverflow.com/questions/3809350
复制相似问题