2011-07-01 13 views
1

DBからすべてのレコードをリストしたいのですが、インデックスページですべてアクティブです(真)。アクティブな足場を使用してアクティブなレコードを表示するにはどうすればよい?

私はレール付きのアクティブスキャホールドプラグインを使用しています2.3.8。私のコントローラにアクティブな状態を追加する方法はありますか?ここ

は私の管理コントローラは

class Admin::AccountsController < ApplicationController 
     active_scaffold :accounts do |config| 
     config.list.sorting = {:id => :asc} 
     config.list.columns = [:description,:year] 
     config.actions = [:create, :update,:list,:search,:delete] 
     end 
    end 

モデル

class Account < ActiveRecord::Base 
    has_many :customer_accounts 
    end 

    class CustomerAccount < ActiveRecord::Base 
    belongs_to :account 
    end 

表構造

create_table :customer_accounts do |t| 
    t.integer :account_id 
    t.active :boolean, :default=>true 
    t.timestamps 
    end 

答えて

2

であるあなたは、アクティブな足場コレクションに条件を適用するために、あなたのコントローラに、この次のメソッドを追加することができます:

0以下の貼り付け
def conditions_for_collection 
    unless has_role?(:admin) # if you want to limit records for non admin users 
     ['customer_accounts.active is ?', true] 
    end 
    end 

ActiveScaffold API上の方法を説明する部分である:

conditions_for_collectionコントローラ方法

あなたは見つけるために、カスタム条件を追加したい場合は(すべて)のリストで使用される、このメソッドを定義します。文字列または配列の構文で条件を返すことがあります。そして、コントローラ上のインスタンスメソッドとして、paramsとsession、そしてすべての標準的な良いものにアクセスできます。

例:

def conditions_for_collection 
    ['user_type IN (?)', ['admin', 'sysop']] 
end 

を指定することも可能に関連するモデルが条件で使用されるために利用可能であることを保証するために参加する:

def joins_for_collection 
    [:customer_accounts] 
    end 

・ホープ、このことができます。

関連する問題