2016-08-04 8 views
1

Я немного застрял в поисковой форме.Рубин на рельсах. Ассоциации поиска Ransack

Мне нужно найти ассоциацию модели и принести результаты назад, когда name_cont НО ТОЛЬКО КОГДА СВЯЗАННАЯ с моделью status == something.

У меня есть gig модель с has_manybelongs_to отношения с request модели и user модели. Модель request имеет следующие атрибуты: status, а модель user имеет следующие атрибуты: publicname. Я хочу найти publicname_cont и показывать результаты только с запросов, которые имеют status == "hired".

В настоящее время мой поиск возвращает результаты publicname независимо от моделей requeststatus.


Gigs Контроллер:

@gigs = @q.result(distinct: false).notexpired.order(date: :asc).page(params[:page]).per(20) 

Форма поиска:

<%= search_form_for @q, url: welcome_index_url, remote: false do |f| %> 

     <%= text_field_tag :search, params[:search], class: 'loc-search', placeholder: "Location"%> 
     <%= f.search_field :locationname_cont, placeholder: "Bar name" %> 
     <%= f.search_field :requests_user_publicname_cont, placeholder: "Band name" %> 
     <%= f.submit %> 
<% end %> 

В настоящее время я могу искать requests_user_publicname_cont и это дает мне все результаты, как и ожидалось, где матч параметры. Ищу способ поиска requests_user_publicname_cont И requests_status_eq, ("hired")


Я не уверен, как идти об этом, любая помощь будет оценена, спасибо.

ответ

2
@q = Gig.joins(:requests).where(requests: { status: 'hired' }).ransack(params[:q]) 
+0

Perfect. Большое спасибо. –

Смежные вопросы