Rails范围条件

时间:2017-02-08 10:46:08

标签: ruby-on-rails scope

以下是News模型中的范围:

scope :category, -> (category_names) { joins(:category).where('categories.name IN (?)', category_names)}  

scope :tag, -> (tag_name) { joins(:tags).where('tags.name = ?', tag_name)}

这里是GET请求: localhost:3000/news?category[]=sit&tag_list=ipsum

[
    {
        "id": 8,
        "tag_list": "ipsum",
        "category": "sit"
    },
    {
        "id": 9,
        "tag_list": "",
        "category": "sit"
    }
]

我的index行动:

news = News.filter(params.slice(:tag_list, :category, :days_ago))

我想获得满足条件的新闻 - 只显示那些有category="sit"tag_list="ipsum"的新闻。

实现这一目标的最佳途径是什么?

2 个答案:

答案 0 :(得分:0)

您应该简单地将范围链接在一起。在你的新闻控制器中:

'#options' => getOptions($form, $form_state),

答案 1 :(得分:0)

您可以简单地将范围链接为:

News.category(params[:category]).tag(params[:tag_list])