对于我正在处理的 Rails 项目,用户模型中的大部分信息都是保密的,例如两因素身份验证电话号码。
我只将模型中的基础知识email
、password
、 和password_confirmation
.
当只能通过批量分配设置少数属性时,我正在尝试弄清楚如何为此类用户设置注册表单。有没有办法指定一组普通的attr_accessible
属性,以及只有在创建新的用户实例时才能访问的第二组?
对于我正在处理的 Rails 项目,用户模型中的大部分信息都是保密的,例如两因素身份验证电话号码。
我只将模型中的基础知识email
、password
、 和password_confirmation
.
当只能通过批量分配设置少数属性时,我正在尝试弄清楚如何为此类用户设置注册表单。有没有办法指定一组普通的attr_accessible
属性,以及只有在创建新的用户实例时才能访问的第二组?
我不明白问题是什么。在您的表单将表单数据发布到的任何控制器操作中,只需从以下值中直接设置模型的非白名单值params
:
def create
user = User.new(params[:user])
user.phone_number = params[:user][:phone_number]
... <other non-whitelisted attribute assignments> ...
user.save!
end
即使phone_number
不在白名单属性列表中(即即使它没有出现在模型的参数attr_accessible
中User
),它也可以工作。您可以对任何其他未列入白名单的表单属性执行相同操作。
attr_accessible 在该类上,因此您始终可以重新打开该类并再次定义它:
class User
attr_accessible :email, :password, :password_confirmation
end
这将采用您想要的任何控制器方法。完成后,您可以再次重新打开该类并设置一个新的 attr_accessible。
不过,这太可怕了。相反,您应该查看 attr_accessible 的定义并尝试直接执行它的操作。也许。