0

我有一个使用 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

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

不确定是否需要更多细节,但这听起来像是我正在努力解决的核心问题。

谢谢

4

1 回答 1

0

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

另一个新手程序员已经吸取了教训:) 我也是,仔细检查新手所做的更改!

谢谢

于 2013-06-28T14:37:14.443 回答