一括割り当てできるすべての属性名のリストが必要です。これは、デフォルトで一括割り当てできない入力フィールドを追加しないカスタムフォームビルダーに必要です。
たとえば、次のモデルがある場合:
class Post < ActiveRecord::Base
attr_protected :account
belongs_to :author
validates_presence_of :title, :author
end
結果として_[:author, :title]
。
Attr_accessibleを明示的に定義した場合、Post.accessible_attributesがそれをカバーします。
それを除いて、このようなことをするのは不格好ですが、うまくいきます:
Post.new.attributes.keys - Post.protected_attributes.to_a
前述の回答の一部は、Rails 4。
MyModel.attribute_names
を使用してテーブル属性の配列を取得できますが、これはRailsのバージョン4で変更されるため、大量の割り当て可能な属性が得られない場合があります http ://weblog.rubyonrails.org/2012/3/21/strong-parameters/
モデルの場合、MyModel.attribute_names
またはMyModel.column_names
を使用できます。
インスタンスには、MyModel.new.attribute_names
を使用できます。
Post.accessible_attributes.to_a.map(&:to_sym)