2

对于我正在处理的 Rails 项目,用户模型中的大部分信息都是保密的,例如两因素身份验证电话号码。

我只将模型中的基础知识emailpassword、 和password_confirmation.

当只能通过批量分配设置少数属性时,我正在尝试弄清楚如何为此类用户设置注册表单。有没有办法指定一组普通的attr_accessible属性,以及只有在创建新的用户实例时才能访问的第二组?

4

2 回答 2

1

我不明白问题是什么。在您的表单将表单数据发布到的任何控制器操作中,只需从以下值中直接设置模型的非白名单值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_accessibleUser),它也可以工作。您可以对任何其他未列入白名单的表单属性执行相同操作。

于 2012-09-28T04:05:42.223 回答
0

attr_accessible 在该类上,因此您始终可以重新打开该类并再次定义它:

class User
    attr_accessible :email, :password, :password_confirmation
end

这将采用您想要的任何控制器方法。完成后,您可以再次重新打开该类并设置一个新的 attr_accessible。

不过,这太可怕了。相反,您应该查看 attr_accessible 的定义并尝试直接执行它的操作。也许。

于 2012-09-28T04:00:53.950 回答