2016-05-18 2 views
0

У меня есть две модели со следующими ассоциациямиRails запрос с включает в has_many и принадлежит ассоциации

class Application < ActiveRecord::Base 
    belongs_to :registration 
end 

class Registration < ActiveRecord::Base 
    has_many :applications, :dependent => :destroy 
end 

Теперь я пытаюсь сделать запрос, как это ниже

@applications = Application.includes(:registration).where("registration.stdniveau = ? AND uni_id = ? AND offer_sent = ? AND (offer_accepted =? OR offer_accepted =?)", 2, @uni.id, 1, nil, 1).references(:registration) 

Я также попытался это

@applications = Application.includes(:registrations).where("registrations.stdniveau = ? AND uni_id = ? AND offer_sent = ? AND (offer_accepted =? OR offer_accepted =?)", 2, @uni.id, 1, nil, 1).references(:registrations) 

Но оба запроса дают мне нечитаемую ошибку. Я не понимаю, чего мне здесь не хватает?

+0

Насколько я знаю, 'belongs_to' всегда имеют особую ценность не кратно так это делает' belongs_to: registration' –

+0

Я пытался как путь с единственным и множественным числом –

ответ

0

1) Вы должны сделать свой belongs_to сингулярный: регистрация

2) Если вы хотите сделать условный выбор на основе другой таблицы, Вы должны присоединиться к нему.

3) Таким образом, это должно работать:

Application.joins(:registration) 
.where("registrations.stdniveau = ? AND uni_id = ? AND offer_sent = ? AND (offer_accepted =? OR offer_accepted =?)", 2, @uni.id, 1, nil, 1") 
+0

Теперь я получаю эту ошибку без такого столбца 'registration.stdniveau' –

+0

@ user1670773, попробуйте там, где близко измените« registration.stdniveau »на« registrations.stdniveau », но в любом случае сохраните его в единственном числе. –

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