2011-11-29 74 views
2

我有这样的代码:过滤器上的关系,activescaffold

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执行两个查询,一个用于文章,第二个用于Category(SELECT * FROM categories),所以想要更改第二个查询(如SELECT * FROM categories where group ='something'。 do you有什么建议吗?

感谢

回答

3

如果我理解这个问题,你需要过滤的新的和编辑文章选择菜单类别,立足参数。 如果是这样的话,你可以覆盖options_for_association_conditions(association)in 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。

+0

我认为你应该显示一些代码片段来改善你的答案 – shodanex