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



我正在用Rails 4强参数构建一个web应用程序。

当构建管理后台办公室控制器时,我想知道允许所有模型属性的最佳方式是什么?

现在,我这样写:

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

你有更好的办法吗?

可以调用bang版本的permit

params.require(:user).permit!

强参数

源码参考:

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

万一有人需要Rails 6,甚至没有一个模型链接到你的控制器,你可以使用:

before_action :accept_all_params
private
def accept_all_params
  params.permit!
end

完成了,现在您可以随心所欲地玩🔥了!

Skull0inc的答案有效,但您可能想要删除created_atupdated_at。强参数的目的是只列出您希望控制器可以更新的属性。类似…

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

这样行吗?

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

相关内容

  • 没有找到相关文章

最新更新