web-dev-qa-db-ja.com

Rails 4強いパラメーター:すべての属性を許可しますか?

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

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

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

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

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

67
Nicolas Blanco

Bangバージョンの許可を呼び出すことができます。

params.require(:user).permit!

強力なパラメーター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
138
Damon Aw

Skull0incの答えは機能しますが、created_atおよびupdated_at。強力なパラメーターの目的は、コントローラーで更新可能な属性のみを一覧表示することです。何かのようなもの...

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

これは機能しますか?

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