0

アクセス可能な属性をモデルに追加するメタプログラミングを行っていますが、これらの属性がアクセス可能かどうかを確認して確認する方法を知りたいです。

ドキュメントを見ましたが、参照が見つかりませんでした。

http://api.rubyonrails.org/classes/ActiveModel/MassAssignmentSecurity/ClassMethods.html#method-i-attr_accessible

私は何かをすることができることを知っていますobject.instance_methodsが、そのダースは実際にそれをアクセス可能にフィルタリングしません.

アクセス可能な属性を返すメソッドはありますか?

4

2 に答える 2

1

とを使用accessible_attributesprotected_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行うと、ブラックリストにあるものを除くすべての属性にアクセスできます。

于 2013-09-20T00:55:55.967 に答える
0

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]

この助けを願っています

于 2013-01-17T10:08:18.123 に答える