Как получить псевдонимы таблицы активных записей

Как я могу получить псевдоним, который генерирует 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 или: от себя, потому что тогда вы указываете псевдонимы таблицы. Но это делает код более сложным
  • Парсинг: включает и генерирует соединение с кодом. Это просто копирование логики.

0 ответов

Другие вопросы по тегам