我想列出来自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
答案 0 :(得分: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控制器方法
如果要向List使用的find(:all)添加自定义条件,请定义此方法。它可能以字符串或数组语法返回条件。作为控制器上的一个实例方法,它可以访问params和session以及所有标准的好东西。
示例:
def conditions_for_collection
['user_type IN (?)', ['admin', 'sysop']]
end
您还可以指定联接以确保关联模型可用于条件:
def joins_for_collection
[:customer_accounts]
end
希望这有帮助。