我是一个相对较新手,因此非常感谢您的协助。

我正在使用带有Clearance gem的Rails 4.2进行身份验证。我希望有人能描述覆盖控制器以在sign_up表单上包含自定义属性的最佳实践。

我已经阅读了很多建议,其中包含各种建议,其中许多来自以前版本的不使用strong_parameters的rails。

如果有人可以简要介绍我需要超越的方法(user_params / user_from_params / etc),我将不胜感激。我可以通过定义仅包含@user = User.new的新“new”方法和使用.permit的新“user_params”方法来使事情正常运行,但是我担心在user_from_params中绕过的默认代码。

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

谢谢

最佳答案

当我有时间更新Clearance文档时,我正在工作,但现在最简单的方法是检查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之前改进这一方面。

10-05 18:17