1

DB のすべてのレコードを一覧表示したいのですが、これらはすべてインデックス ページでアクティブ (true) です。

Rails 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
4

1 に答える 1

2

次のメソッドをコントローラーに追加して、アクティブなスキャフォールド コレクションに条件を適用できます。

  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のメソッドを説明する部分を貼り付けます。

condition_for_collection コントローラ メソッド

List で使用される find(:all) にカスタム条件を追加する場合は、このメソッドを定義します。文字列または配列構文で条件を返す場合があります。また、コントローラーのインスタンス メソッドとして、params と session およびすべての標準的な優れた機能にアクセスできます。

例:

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

結合を指定して、関連付けられたモデルを条件で使用できるようにすることもできます。

  def joins_for_collection
    [:customer_accounts]
  end

お役に立てれば。

于 2011-07-01T08:21:23.740 に答える