簡體   English   中英

Devise 3在Rails 4下的自定義用戶字段

[英]Custom user fields in Devise 3 under Rails 4

我正在使用Devise 3的候選版本,以便可以在Rails 4中使用它。在Rails 3.2中,我曾經能夠通過將字段添加到registration / edit.html來向我的User模型添加自定義字段。 erb和registration / new.html.erb文件(運行正確的遷移后)。 然后,我只需將該字段添加到模型中的attr_accessible字段列表中即可。

但是,在Rails 4中,沒有attr_accessible列表,我不能簡單地在視圖中添加字段。 如何添加自定義用戶字段?

新增中

     def configure_permitted_parameters
         devise_parameter_sanitizer.for(:sign_in) { |u| u.permit(:username, :email) }
         devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:username, :email, :password, :password_confirmation) }
         devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:username, :email, :password, :password_confirmation, :current_password) }
     end

到applicationcontroller為我工作。

有人告訴我要在github頁上的README中查找。 簡單。

class ApplicationController < ActionController::Base
  before_filter :configure_permitted_parameters, if: :devise_controller?

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up) << :username
  end
end

如果您想允許其他參數,可以使用簡單的before過濾器

ApplicationController:

class ApplicationController < ActionController::Base
  before_filter :configure_permitted_parameters, if: :devise_controller?

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up) << :username
  end
end

您需要啟用Strong Parameters進行設計,而不是attr_accessible進行設計,這需要創建新的初始化程序,例如:

DeviseController.class_eval do
  def resource_params
    unless params[resource_name].blank?
      params.require(resource_name).permit(:email, :password, :password_confirmation, :remember_me)
    end
  end
end

確保您從rails4分支(plataformatec / devise)中克隆了gem。 從模型中刪除attr_accesible

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM