我正在构建一个带有 Rails 4强参数的 Web 应用程序。
在构建管理后台办公控制器时,我想知道允许所有模型属性的最佳方法是什么?
现在,我写道:
def user_params params.require(:user).permit(User.fields.keys) end
你有更好的办法吗?
你可以调用刘邦版本的许可证。
params.require(:user).permit!
Github 上的 Strong Params README
参考源代码:
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
这样行吗?
def user_params params.require(:user).permit(User.column_names) end
Skull0inc 的回答是有效的,但是您可能需要删除 created_at和 updated_at。强参数的目的是只列出希望控制器可更新的属性。 比如..。
created_at
updated_at
def user_params params.require(:user).permit(User.column_names - ["created_at", "updated_at"]) end
如果有人需要 Rails 6,甚至没有一个模型链接到您的控制器,您可以使用:
before_action :accept_all_params private def accept_all_params params.permit! end
好了,现在你想玩多少就玩多少!