0

私は現在、Rails 3 に組み込まれている大量割り当てセキュリティを使用して、モデルについてどのレベルのユーザーが更新できるかを調べています。たとえば、このコードを使用すると、ユーザー レベルに基づいて属性を保護できます。

  class Customer
    attr_accessor :name, :credit_rating

    attr_accessible :name
    attr_accessible :name, :credit_rating, :as => :admin
  end

検索を行うときにどの属性が表示されるかについて、これと同じアイデアを使用できるようにしたいと考えています。たとえば、私は言うことができるようにしたいです

Customer.all.as(:admin) 

そして信用格付けを取り戻す。これを行うことと比較してください

Customer.all

credit_rating を除くすべての属性を取得する

これはレールがサポートしているものですか?

4

1 に答える 1

1

attr_accessible は、一括割り当てで着信属性をフィルタリングするために使用されます。これは、開発者がパラメーターの受信ハッシュを手動で消去する必要がないように作成された便利なメソッドであり、開発者が制御するものではありません。

情報を表示するとき、開発者は表示したいものを完全に制御できるため、読み取り機能を制限する理由はないようです。

ただし、レールでは、クエリで必要な属性を「選択」できます。http://guides.rubyonrails.org/active_record_querying.html#selecting-specific-fieldsを参照してください。

選択した値を制限する admin という名前のスコープを簡単に作成できます。

完全なモデルではなく、値だけを取得したい場合は、生成された sql を使用できます。例えば。

ActiveRecord::Base.connection.select_values(Customer.select('name').to_sql)
于 2011-06-02T00:01:01.860 に答える