アクセス可能な属性をモデルに追加するメタプログラミングを行っていますが、これらの属性がアクセス可能かどうかを確認して確認する方法を知りたいです。
ドキュメントを見ましたが、参照が見つかりませんでした。
私は何かをすることができることを知っていますobject.instance_methods
が、そのダースは実際にそれをアクセス可能にフィルタリングしません.
アクセス可能な属性を返すメソッドはありますか?
アクセス可能な属性をモデルに追加するメタプログラミングを行っていますが、これらの属性がアクセス可能かどうかを確認して確認する方法を知りたいです。
ドキュメントを見ましたが、参照が見つかりませんでした。
私は何かをすることができることを知っていますobject.instance_methods
が、そのダースは実際にそれをアクセス可能にフィルタリングしません.
アクセス可能な属性を返すメソッドはありますか?
とを使用accessible_attributes
しprotected_attributes
ます。
class User < ActiveRecord::Base
attr_accessible :first_name, :last_name
end
User.accessible_attributes
# => #<ActiveModel::MassAssignmentSecurity::WhiteList: {"", "first_name", "last_name"}>
User.protected_attributes
# => #<ActiveModel::MassAssignmentSecurity::BlackList: {"id", "type"}>
attr_protected
クラスにない呼び出しをattr_accessible
行うと、ブラックリストにあるものを除くすべての属性にアクセスできます。
User
これらの属性を持つモデルが:id, :lastname, :firstname, :email
あり、モデル クラスが次のとおりであると仮定します。
class User < ActiveRecord::Base
attr_accessible :lastname, :firstname
end
アクセス可能なリストは次のようになります。
User.attr_accessible[:default].to_a
=> [:lastname, :firstname]
さらに、アクセスできない属性のリストを取得できます。
User.new.attributes.keys - User.attr_accessible[:default].to_
=> [:id, :email]
この助けを願っています