2011-07-01 80 views
1

我想列出来自数据库的所有记录,这些记录在我的索引页中都是有效的(true)。如何使用在rails 2.3.8中关联的活动脚手架列出活动记录?

我使用主动脚手架插件与导轨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

您可以将此下面的方法添加到您的控制器上的活动支架收集申请条件:

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 

希望这有助于。