2017-02-08 5 views
1

は私のスコープはNewsモデルである: localhost:3000/news?category[]=sit&tag_list=ipsumRailsのスコープ条件ここ

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

マイindexアクション:

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

私がしたい

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

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

ここGETリクエストです両方を満足するニュースを得る条件のうち、category="sit"およびtag_list="ipsum"を有するそれらのニュースのみが表示されるべきである。

これを達成する最もよい方法は何ですか?

答えて

0

単純にスコープを連結してください。ニュースのコントローラで:

News.category(params['categori']).tag(params['tag_list']) 
0

あなたは、単にようにスコープをリンクすることができます。

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