2011-07-10 16 views
0

[更新的問題,以澄清]讓ActiveRecord的追加一些SQL全自動

我可以建立在Rails的3/3.1的模型,使ActiveRecord的自動使用/追加一些加入我配置爲這種模式?

例:

使用這樣的代碼:

class Component < ActiveRecord::Base 
    def self.base_query 
     joins("join t05 on d04.t05_ukey = t05.ukey left join d03 on d04.d03_ukey = d03.ukey left join d16 on d04.d16_ukey = d16.ukey") 
    end 
    end 

    Component.first  # under the hood is doing Component.base_query.first 
    Component.where(...) # under the hood is doing Component.base_query.where 

但是ActiveRecord的調用引擎蓋下的方法base_query,而無需顯式調用它。只是爲了讓它更像Rails。

任何想法?

回答

0

查看本指南關於活動記錄查詢Arel。關於這個主題,還有一些非常好的railscasts(@ railscasts.com)。如果你發現自己丑陋的條款等,看一看meta_where寶石。我發誓這三件事。

+0

發現我可以創建一個方法(例如:basic_query)幷包含所有這些連接(...),但每次必須查詢組件時都必須調用「Component.basic_query」。我希望ActiveRecord在每次使用Component模型時追加所有這些連接(從我所展示的SQL查詢中),即使我調用Component.find(1)。 –