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



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

我使用的是Rails4.2,带有用于身份验证的Clearancegem。我希望有人能描述一下在sign_up表单中包含自定义属性的控制器的最佳实践

我读过很多不同建议的建议,其中许多来自不使用strong_parameters的rails的早期版本。

如果有人能简要介绍我需要克服的方法(user_params/user_from_params/etc),我将不胜感激。我可以通过定义一个新的"new"方法(只包括@user=user.new)和一个使用permit的新"user_params"方法来实现功能,但我担心在user_from_params中绕过的默认代码。

任何关于这里最佳实践的建议都将非常棒!

感谢

首先,扩展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

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

user_from_params的默认实现现在有点奇怪,因为Clearance1.x仍然支持Rails3.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仍然在那里使用。我在Clearance中打开了一个问题,看看我们是否可以在2.0之前改进这一方面。

相关内容

  • 没有找到相关文章

最新更新