74

Rails4の強力なパラメーターを使用してWebアプリを構築しています。

管理バックオフィスコントローラーを構築するとき、すべてのモデル属性を許可するための最良の方法は何でしょうか。

今のところ、私はこれを書いた:

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

もっと良い方法を考えますか?

4

4 に答える 4

148

あなたは許可証の強打バージョンを呼び出すことができます。

params.require(:user).permit!

GithubのStrongParamsREADME

参照用のソースコード:

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
于 2012-12-26T11:09:30.787 に答える
12

誰かがRails6でそれを必要とする場合に備えて、コントローラーにリンクされたモデルがなくても、次を使用できます。

before_action :accept_all_params

private

def accept_all_params
  params.permit!
end

これで、好きなだけ遊ぶことができます。

于 2020-01-14T21:23:31.707 に答える
1

Skull0incの答えは機能しますが、削除することをお勧めしcreated_atますupdated_at。強力なパラメーターの目的は、コントローラーによって更新可能にする属性のみをリストすることです。何かのようなもの...

def user_params
  params.require(:user).permit(User.column_names - ["created_at", "updated_at"])
end
于 2019-03-07T21:51:15.333 に答える
0

これは機能しますか?

def user_params 
  params.require(:user).permit(User.column_names)
end
于 2018-09-13T15:19:32.860 に答える