У меня есть приложение, которое мы только что обновили с 2.1.0 до 2.3.10. После обновления ранее работавшее расширение ассоциации вызывает сбой. Вот код модели для расширения:
Class Classroom
has_many :registrations
has_many :students, :through => :registrations, :uniq => true do
def in_group(a_group)
if a_driver
scoped(:conditions => ['registrations.group_id = ?', a_group])
else
in_no_group
end
end
def in_no_group
scoped(:conditions => 'registrations.group_id is null')
end
end
end
Это упрощенная модель моей реальной проблемы, но в основном я имел обыкновение делать
classroom.students.in_group(honor_students)
Это больше не работает со следующим выводом:
classroom.students.in_group(honor_students)
ActiveRecord::StatementInvalid: Mysql::Error: Unknown column 'registrations.group_id' in 'where clause': SELECT * FROM `students` WHERE (registrations.group_id = 1234)
Когда я просто беру список студентов, SQL имеет весь ожидаемый синтаксис объединения, которого нет в предыдущей версии:
SELECT DISTINCT `students`.* FROM `students` INNER JOIN `registrations` ON `students`.id = `registrations`.student_id WHERE ((`registrations`.classroom_id = 9876))
Почему в расширении ассоциации отсутствует весь объединяющий SQL?