Как получить псевдонимы таблицы активных записей - PullRequest
1 голос
/ 07 декабря 2011

Как я могу получить псевдоним, который генерирует active_record? Я хотел бы создать метод table_alias_of, который принимает 3 аргумента

  1. Модель, из которой запускается запрос
  2. Включает хэш
  3. Путь ассоциаций

Для устранения ассоциаций в условиях или в порядке.

Пример: все включает указание на одну и ту же таблицу «контакты».

includes = ["end_user", "reseller", "distributor"]

e = table_alias_of(Maintenance, includes, "end_user") 
e #=> contacts
r = table_alias_of(Maintenance, includes, "reseller") 
r #=> maintenances_contacts
d = table_alias_of(Maintenance, includes, "distributor") 
d #=> maintenances_contacts_2

Maintenance.all(
    :include => includes, 
    :conditions => ["#{d}.name=?", x], 
    :order => "#{r}.name, #{e}.name"

Как я могу реализовать table_alias_of? Он должен быть совместим с рельсами 2.3.x и рельсами 3.1.x

То, что я уже сделал / подумал, это

  • Позволяет rails генерировать строку предложения from и анализировать ее с помощью регулярного выражения. Но это ломается при переходе на рельсы 3 / арель.
  • Написание: join или: от себя, потому что тогда вы указываете псевдонимы таблиц. Но это делает код более сложным
  • Парсинг: включает и генерирует соединение с кодом. Это просто копирование логики.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...