итоги: в основном, я хочу, чтобы пользователь вводил заголовок партера для фильтрации списка распределений.Один дистрибутив имеет один профиль, но один партнер имеет много дистрибутивов.Таким образом, если кто-то введет название одного партнера в форму поиска.Это соответствовало бы нескольким идентификаторам распределения (посредством нескольких идентификаторов match_profile).
Я должен описать три рассматриваемые модели:
distribution:
belongs_to :matching_profile, :counter_cache => true
matching_profile:
belongs_to :partner
partner:
has_many :matching_profiles
Мне нужно получить доступ к partner.title черезмодель распределения.
я могу сделать это в SQL: select d.* from distributions d join matching_profiles m on d.matching_profile_id = m.id join partners p on m.partner_id = p.id where p.title in ( 'TITLE' )
/ summary
ОБНОВЛЕНИЕ: здесь, по сути, это то, что я хотел бы сделать.Хотя некоторые пробелы отсутствуют ... Пожалуйста, помогите!
в моем контроллере у меня есть:
@search = Distribution.workflow.order(sort_column + " " + sort_direction).search(params[:traits_searchable_search])
в представлении, которое я имею:
<%= form_for @search, :url => url_for(:controller => params[:controller], :action => params[:action]), :html => {id => "distribution_workflow",:method => :get} do |f| %>
<div class="form-block mrl mbm mtm">
<%= f.label 'matching_profile.partner.title_equal', "Partner" %>
<%= f.select @search.where('matching_profile_id in (select id from matching_profiles where partner_id in (select id from partners where title in (?)))'), Partner.select(:title), :include_blank => " " %>
</div>
the fЧасть .select - это то, что неверно, но я думаю, что ИДЕЯ того, что я пытаюсь сделать, отражена здесь.Я просто не знаю, КАК это сделать./ update
Я представляю отчет на веб-странице, и мне нужно разрешить пользователю отфильтровывать, какие строки доступны, основываясь на названии партнера.Однако название партнера отсутствует в модели, для которой я создал форму.Форма предназначена для модели распространения, которая имеет ссылку на Match_profile, которая имеет ссылку на партнера.таблица партнеров содержит заголовок, по которому я хотел бы отфильтровать.
В настоящее время я пытался сделать это, добавив еще одно search_scope
search_scopes :equal => [:status, 'matching_profile.partner.title'] #obviously very wrong
обновление: Iтакже попробовал это:
search_scopes :equal => [:status, 'distributions.matching_profile.partner.title']
это не дает мне ошибку, но не фильтрует также.Шаг в правильном направлении?/ update
но я получаю сообщение об ошибке, потому что я не могу "прыгнуть" две таблицы, чтобы добраться до заголовка.Я вижу это в сообщении об ошибке:
AND (matching_profile.partner.title = 'PARTNER_TITLE')
, конечно, это неправильно, потому что нет поля match_profile, только match_profile_id.
Я не уверен, что лучший способидти об этом.Любой совет приветствуется.