1

如何检索 active_record 生成的别名?我想创建一个带有 3 个参数的方法 table_alias_of

  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?它应该与 rails 2.3.x 以及 rails 3.1.x 兼容

我已经做过/想到的是

  • 让 rails 生成 from 子句字符串并用正则表达式解析它。但这在切换到 rails 3/arel 时会中断。
  • 编写 :join 或 :from 你自己,因为你指定了表别名。但这使代码更加复杂
  • 解析 :include 并使用代码生成连接。那只是复制ar逻辑。
4

0 回答 0