如何检索 active_record 生成的别名?我想创建一个带有 3 个参数的方法 table_alias_of
- 运行查询的模型
- 包含哈希
- 关联路径
在条件或顺序中处理关联。
示例:全部包括指向同一个表“联系人”。
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逻辑。