Как вывести список активных записей, используя Active scaffold с ассоциацией в рельсах 2.3.8? - PullRequest
1 голос
/ 01 июля 2011

Я хочу перечислить все записи из БД, которые все активны (true) на моей странице индекса.

Я использую активный плагин scaffold с рельсами 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

1 Ответ

2 голосов
/ 01 июля 2011

Вы можете добавить следующий метод к своему контроллеру, чтобы применить условия к коллекции активных лесов:

  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 метод управления

Если вы хотите добавить пользовательские условия для поиска (: все), используемого списком, определите этот метод. Может возвращать условия в синтаксисе строки или массива. И как метод экземпляра на контроллере, он имеет доступ к параметрам и сеансу и всем стандартным хорошим вещам.

Пример:

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

Вы также можете указать объединения, чтобы убедиться, что связанная модель доступна для использования в условиях:

  def joins_for_collection
    [:customer_accounts]
  end

Надеюсь, это поможет.

...