Rails 4强参数:允许所有属性?

时间:2012-12-25 20:49:25

标签: ruby-on-rails ruby-on-rails-3 strong-parameters

我正在使用Rails 4强大的参数构建一个Web应用程序。

在构建管理员后台控制器时,我想知道允许所有模型属性的最佳方法是什么?

现在,我写了这个:

def user_params 
  params.require(:user).permit(User.fields.keys)
end

你认为有更好的方法吗?

4 个答案:

答案 0 :(得分:137)

您可以拨打许可证的爆炸版本。

params.require(:user).permit!

Strong Params README on Github

参考源代码:

def permit!
  each_pair do |key, value|
    convert_hashes_to_parameters(key, value)
    self[key].permit! if self[key].respond_to? :permit!
  end

  @permitted = true
  self
end

答案 1 :(得分:7)

如果有人需要Rails 6,甚至没有模型链接到您的控制器,则可以使用:

before_action :accept_all_params

private

def accept_all_params
  params.permit!
end

完成了,现在您可以随意玩?了!

答案 2 :(得分:1)

Skull0inc的答案有效,但是您可能要删除created_atupdated_at。强参数的目的是仅列出您要由控制器更新的属性。 像...

def user_params
  params.require(:user).permit(User.column_names - ["created_at", "updated_at"])
end

答案 3 :(得分:0)

这项工作可以吗?

def user_params 
  params.require(:user).permit(User.column_names)
end