【发布时间】:2013-05-30 07:14:54
【问题描述】:
关于在 RegistrationController 中添加 :current_password 属性是否正确的问题?
include ActiveModel::ForbiddenAttributesProtection 的用户模型
# app/model/user.rb
class User < ActiveRecord::Base
include ActiveModel::ForbiddenAttributesProtection
从 Devise 的密码控制器继承的密码控制器
# app/controllers/users/passwords_controller.rb
class Users::PasswordsController < Devise::PasswordsController
def resource_params
params.require(:user).permit(:email, :password, :password_confirmation)
end
private :resource_params
end
从 Devise 的注册控制器继承的注册控制器
# app/controllers/users/registrations_controller.rb
class Users::RegistrationsController < Devise::RegistrationsController
def resource_params
params.require(:user).permit(:name, :email, :password, :password_confirmation, :current_password)
end
private :resource_params
end
Route for Devise 使用指定用户的密码和注册控制器。
# config/routes.rb
devise_for :users, :controllers => {:registrations => "users/registrations", :passwords => "users/passwords"}
在RegistrationsController 中,我必须添加属性:current_password 以便用户能够编辑他们的个人资料。
我问的原因是没有strong_parameters 我只会为:email, :password, :password_confirmation, :remember_me 指定一个attr_accessible。
非常感谢任何见解。
【问题讨论】:
-
不确定这是否是最好的方法,您不想将其放在用户级别而不是注册级别吗?
标签: ruby-on-rails devise ruby-on-rails-3.2 strong-parameters