rails 4 和 thoughtbot/clearance - 向用户模型添加字段

rails 4 and thoughtbot/clearance - adding fields to the user model

我是一个相对的新手,非常感谢任何帮助。

我正在使用 Rails 4.2,具有用于身份验证的权限 gem。我希望有人可以描述覆盖控制器以在 sign_up 表单中包含自定义属性的最佳实践。

我阅读了很多建议,其中有很多建议来自未使用 strong_parameters 的 rails 的早期版本。

如果有人能简要说明我需要覆盖的方法 (user_params/user_from_params/etc),我将不胜感激。我可以通过定义一个只包含@user = User.new 的新 'new' 方法和一个使用 .permit 的新 'user_params' 方法来让事情正常运行,但我担心默认代码我在 user_from_params 中绕过。

任何有关最佳实践的建议都很棒!

谢谢

当我有时间更新清关文档时,我正在工作,但现在最简单的事情是检查 Clearance users controller 以查看可以覆盖的各种方法。

user_from_params的默认实现现在有点奇怪,因为Clearance 1.x仍然支持Rails 3.x,所以它是为我们使用attr_accessible 而不是强参数。

我可能会这样做:

def user_params
  # Use strong params to do what you need
end

def user_from_params
  User.new(user_params)
end

您可能需要修改 user_params 一点,这样您在那里所做的任何事情仍然对 new 操作有效,因为 user_from_params 仍然在那里使用。我已经打开了一个 issue in Clearance 看看我们是否可以在 2.0 之前改进这方面。

首先,扩展 Clearance::UsersController 并覆盖 #user_params 以允许新属性:

# app/controllers/users_controller.rb
class UsersController < Clearance::UsersController

  private

  def user_params
    params[:user].permit(:email, :password, :your_custom_attribute)
  end
end

然后,更新您的路由文件以使用您的新控制器:

# config/routes.rb
resources :users, controller: :users, only: :create