Rails: Можно ли объединять объединения при объединении областей? - PullRequest
3 голосов
/ 01 октября 2009

В классе A у меня есть две области: s1 и s2, которые объединяются в таблицу T с использованием одинаковых столбцов соединения:

named_scope :s1 :joins => "JOIN T on T.id = A.t_id", ...some conditions
named_scope :s2 :joins => "JOIN T on T.id = A.t_id", ...some other conditions

Теперь это не получается:

A.s1.s2.all

Ошибка:

ActiveRecord :: StatementInvalid: Mysql :: Ошибка: не уникальная таблица / псевдоним: 'T'

Я ожидал, что Rails проявит смекалку в отношении этих идентичных объединений и просто применит объединение один раз, но это не так. Я мог бы использовать псевдонимы таблиц, но тогда у меня все равно было бы два одинаковых соединения без веской причины.

Я уверен, что должно быть правильное решение для этого?

1 Ответ

1 голос
/ 01 октября 2009

Оказалось, что это ошибка в Rails 2.3.4:

В моем реальном коде я использовал другой регистр символов для ключевого слова ON в выражении JOIN, и Rails не был достаточно умен, чтобы объединить это. Видимо области видимости делают чувствительное к регистру сравнение в строках JOIN.

Я открыл отчет об ошибке: текст ссылки

...