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

问题描述 投票:67回答:3

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

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

现在,我写了这个:

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

你觉得有更好的方法吗?

ruby-on-rails ruby-on-rails-3 strong-parameters
3个回答
138
投票

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

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
投票

Skull0inc的答案有效,但您可能想删除created_atupdated_at。强params的意图是仅列出控制器可以更新的属性。就像是...

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

0
投票

这会有用吗?

def user_params 
  params.require(:user).permit(User.column_names)
end
© www.soinside.com 2019 - 2024. All rights reserved.