Rails4の強力なパラメーターを使用してWebアプリを構築しています。
管理バックオフィスコントローラーを構築するとき、すべてのモデル属性を許可するための最良の方法は何でしょうか。
今のところ、私はこれを書いた:
def user_params
params.require(:user).permit(User.fields.keys)
end
もっと良い方法を考えますか?
Rails4の強力なパラメーターを使用してWebアプリを構築しています。
管理バックオフィスコントローラーを構築するとき、すべてのモデル属性を許可するための最良の方法は何でしょうか。
今のところ、私はこれを書いた:
def user_params
params.require(:user).permit(User.fields.keys)
end
もっと良い方法を考えますか?
あなたは許可証の強打バージョンを呼び出すことができます。
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
誰かがRails6でそれを必要とする場合に備えて、コントローラーにリンクされたモデルがなくても、次を使用できます。
before_action :accept_all_params
private
def accept_all_params
params.permit!
end
これで、好きなだけ遊ぶことができます。
Skull0incの答えは機能しますが、削除することをお勧めしcreated_at
ます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