我正在使用 Rails 4 强参数构建一个 Web 应用程序。
在构建管理员后台控制器时,我想知道允许所有模型属性的最佳方法是什么?
现在,我写了这个:
def user_params
params.require(:user).permit(User.fields.keys)
end
你想到更好的方法了吗?
我正在使用 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_at
and updated_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