関係、ActivesCaffoldのフィルター
-
25-10-2019 - |
質問
私はこのコードを持っています:
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は、記事用に1つ、カテゴリには2つのクエリを実行していることがわかります(select * from categories
)したがって、この2番目のクエリを変更したい(select *から categories
group = '何か'。何か提案はありますか?
ありがとう
解決
質問を理解している場合は、パラメーターに基づいて、新しいメニューと編集記事の選択メニューで使用できるカテゴリをフィルタリングする必要があります。この場合、options_for_association_conditions(association)を記事でオーバーライドできます。例:
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の部分的な_category_form_columnを追加する方法のレンダリング方法をカスタマイズすることです。
所属していません StackOverflow