2017-02-08 2 views
1

Вот мои прицелы в News модели:Rails условия сферы применения

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)) 

Я хочу получать новости, которые удовлетворяют BOTH из условий - должны отображаться только те новости, которые имеют category="sit" AND tag_list="ipsum".

Каков наилучший способ достичь этого?

ответ

0

Вы должны просто объединить области. В контроллере новости:

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

Вы можете просто связать областей, как так:

News.category(params[:category]).tag(params[:tag_list]) 
Смежные вопросы