5

我正在使用 Devise 3 的候选版本,以便可以将它与 Rails 4 一起使用。在 Rails 3.2 中,我曾经能够通过简单地将自定义字段添加到我的User模型中来添加该字段到 registration/edit.html.erb和registration/new.html.erb 文件(运行正确的迁移后)。然后我只需将该字段添加到attr_accessible模型中的字段列表中。

但是,在 Rails 4 中,没有attr_accessible列表,我不能简单地在视图中添加字段。如何添加自定义用户字段?

4

4 回答 4

9

添加

     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

应用程序控制器为我工作。

于 2013-07-23T21:47:25.217 回答
7

有人告诉我查看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
于 2013-05-31T08:01:39.533 回答
3

如果您想允许其他参数,您可以在您的

应用控制器:

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
于 2013-10-18T13:07:01.473 回答
0

您需要为设计启用强参数而不是 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

于 2013-05-31T08:12:47.723 回答