1

我已经阅读了文档,但仍然无法理解语法/格式。

我对rails很陌生。我的模型中有这个:

attr_accessible :email, :username

由于 rails 4.0 的变化,这需要转移到我的控制器上。

如果我把它放在我的控制器中是否正确(这是我认为文档所说的,但不确定我是否正确解释):

before_filter :configure_permitted_parameters, if: :devise_controller?

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up) << :username
  end 

对我来说,这样的事情更有意义,我可以这样做吗?:

protected
  def permitted_paramters
    params.require(:username, :email).permit(:username, :email)
  end

任何建议表示赞赏,谢谢。

4

1 回答 1

0

虽然在控制器中的其他任何地方都做类似的事情会更有意义,但params.require您不能在这里使用 Devise 这样做,因为:

  • 设计需要知道你是如何调用你的方法的(这里permitted_parameters
  • 您不想为每个控制器过滤这些参数

这就是为什么您需要使用 Devise'sdevise_parameter_sanitizer并确保仅在devise_controller?.


作为旁注,在您的第二个示例中:

params.require(:username, :email).permit(:username, :email)

require方法不应采用属性列表,而是采用属性分组的名称。在不同的控制器上,它应该看起来像这样:

params.require(:user).permit(:username, :email)

这将允许以下参数:user[username]=Joe&user[email]=joe@example.org

于 2014-03-28T10:27:45.210 回答