фильтр по отношению, activescaffold - PullRequest
2 голосов
/ 30 ноября 2011

У меня есть этот код:

class ArticlesController < ApplicationController
  active_scaffold :articles do |config|
   config.label = "Manage my articles"
   config.actions.exclude :show

    form_cols = [:name, :summary, :content, :author, :category, :article_date]

      config.columns = form_cols

      config.list.sorting = {:content_file_name => :asc}
      config.columns[:category].css_class = 'categories'
      config.columns[:category].clear_link
      config.columns[:category].form_ui = :select
......

и модели

class Article < ActiveRecord::Base
  belongs_to :category, :class_name => 'Category'
end

class Category < ActiveRecord::Base
  has_many :articles, :foreign_key => :category_id
end

Категория отображается в этой таблице

CREATE TABLE `categories` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `active` tinyint(1) DEFAULT '1',
  `group` varchar(255) DEFAULT 'novel',
  PRIMARY KEY (`id`)
);

Я хочу показать только категории сконкретная «группа» в зависимости от user_type.Проблема в том, что я не знаю, как фильтровать строки в отношении.Я вижу, что activescaffold выполняет два запроса, один для статей, а второй для категории (SELECT * FROM categories), поэтому я хочу изменить этот второй запрос (например, SELECT * FROM categories, где group = 'нечто').у вас есть какие-либо предложения?

спасибо

1 Ответ

3 голосов
/ 30 ноября 2011

Если я понимаю вопрос, вам нужно отфильтровать категории, доступные в меню выбора для новой и отредактировать статью, основываясь на параметре.Если это так, вы можете переопределить options_for_association_conditions (association) в Articles_helper, например:

module ArticlesHelper
  def options_for_association_conditions(association)
    if association.name == :category
      ['categories.id IN (?)', current_user.available_groups.map(&:id)]
    else
      super
    end
  end
end

см .: https://github.com/activescaffold/active_scaffold/wiki/Custom-Association-Options

Другой вариант может быть изменен при выборе выбора, добавляячастичная _category_form_column в представлениях / статьях.

...