如何解决Devise质量分配错误中的冲突

时间:2013-06-28 02:35:49

标签: ruby devise

我有一个运行正常的应用程序使用Devise进行身份验证。我添加了CanCan,我现在遇到了Devise的问题。给定标准的“encrypted_pa​​ssword”和“password_confirmation”属性,如果它们未被指定为attr_accessible,那么当控制器尝试执行此操作时:

@user = User.new(params[:user])

我收到标准的MassAssignment错误。但是如果我将它们添加到attr_accessible列表,我就可以创建用户,但是由于attr_accessible不允许Devise加密密码,因此它将在密码验证时失败。我怀疑这个问题是我的路线中的问题,因为我有两个:

devise_for :users, :path_prefix => 'secure'
resources :users

资源:用户在那里,以便管理员和使用标准的CRUD类型操作来管理CanCan。

不确定是否需要更多详细信息,但这听起来像是一个核心问题,我正在勾引我的脚趾。

谢谢

1 个答案:

答案 0 :(得分:0)

我发现了问题。有人将模型的attr_accessible列表更改为encrypted_pa​​ssword而不是密码。 Devise正在参数中查找密码,然后为模型创建encrypted_pa​​ssword。

另一位新的程序员已经吸取了教训:)我也是如此,仔细检查了新生的变化!

三江源