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
我是一个相对的新手,非常感谢任何帮助。
我正在使用 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