我有一个运行正常的应用程序使用Devise进行身份验证。我添加了CanCan,我现在遇到了Devise的问题。给定标准的“encrypted_password”和“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。
不确定是否需要更多详细信息,但这听起来像是一个核心问题,我正在勾引我的脚趾。
谢谢
答案 0 :(得分:0)
我发现了问题。有人将模型的attr_accessible列表更改为encrypted_password而不是密码。 Devise正在参数中查找密码,然后为模型创建encrypted_password。
另一位新的程序员已经吸取了教训:)我也是如此,仔细检查了新生的变化!
三江源