如何获取activerecord表别名

时间:2011-12-07 15:57:34

标签: ruby-on-rails activerecord table-alias

如何检索active_record生成的别名?我想创建一个方法table_alias_of,它接受3个参数

  1. 运行查询的模型
  2. 包含哈希
  3. 关联路径
  4. 解决条件或顺序中的关联。

    示例:所有包含指向同一个表“联系人”。

    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子句字符串并使用regex解析它。但是当切换到rails 3 / arel时,这会中断。
    • 自己编写:join或:因为那时你指定了表别名。但这会使代码更复杂
    • 解析:使用代码包含并生成连接。那只是复制逻辑。

0 个答案:

没有答案