Расширения ассоциации больше не работают в Rails 2.3.10 - PullRequest
1 голос
/ 30 ноября 2010

У меня есть приложение, которое мы только что обновили с 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?

1 Ответ

1 голос
/ 30 ноября 2010

используйте это Rails 2.3: Как превратить этот оператор SQL в named_scope для студентов вместо того, чтобы вкладывать его в ассоциацию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...