我只是按照文档在配置文件中添加新字段,但它似乎不起作用。加班我得到Unpermitted parameters: firstname, lastname, password_confirmation
。
这是我的用户模型:
class User < ApplicationRecord
devise :database_authenticatable, :registerable, :recoverable, rememberable, :trackable, :validatable
has_many :issues
has_many :comments
has_many :likes
# Validations
validates :email, presence: true
validates :password, presence: true
# Omniauth
devise :omniauthable, omniauth_providers: [:facebook]
# Omniauth Facebook # Omniauth Facebook
def self.from_facebook(auth)
where(facebook_id: auth.uid).first_or_create do |user|
# user.image = auth.info.image
user.email = auth.info.email
user.firstname = auth.info.first_name
user.lastname = auth.info.last_name
user.country = auth.info.location
user.region = ""
user.password = Devise.friendly_token[0, 20]
# user.skip_confirmation!
end
end
## Paperclip avatar
has_attached_file :avatar, styles: {
big: "1200x1200>",
medium: "300x300>",
thumb: "100x100>"
}, default_url: "missing.png"
validates_attachment_content_type :avatar, :content_type => /\Aimage\/.*\Z/
end
这是我的应用程序控制器,其中包含新设计字段的配置:
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
# Devise parameters configuration
before_action :configure_devise_parameters, if: :devise_controller?
def configure_devise_parameters
devise_parameter_sanitizer.permit(:sign_up) { |u| u.permit(:email, :avatar, :firstname, :lastname, :region, :country, :bio, :password, :password_confirmation, :current_password) }
devise_parameter_sanitizer.permit(:account_update) { |u| u.permit(:email, :avatar, :firstname, :lastname, :region, :country, :bio, :password, :password_confirmation, :current_password) }
end
end
我在模型上添加了两个新字段( first_name
, last_name
) User
。然后我RegistrationsController
通过创建registrations_controller.rb
这样的覆盖设计
class RegistrationsController < Devise::RegistrationsController
private
def sign_up_params
params.require(:user).permit(:first_name, :last_name, :email,
:password, :password_confirmation)
end
def account_update_params
params.require(:user).permit(:first_name, :last_name, :email,
:password, :password_confirmation, :current_password)
end
并在routes.rb
文件中更新了我的设计路线
devise_for :users, :controllers => { registrations: 'registrations' }
它对我有用!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句