2012-05-07 104 views
3

我是Rails的新手。我有三個表abcRails:從多個表中選擇列

b有2列: b1b2

c有2列:c1c2

a有3列:a1b1(外鍵)和c1(外鍵)

我想通過給值a1

得到雙我想是這樣

a.find(:all, :joins => [:b, :c], :select => "b2, c2", :conditions => {:a => {:a1 => Time.now.midnight. ... Time.now}}, :group => "b2, c2") 

SQL,這產生的作品很好,我能看到的結果。但我認爲,自從我做a.find以來,我無法從結果集中檢索b2c2

我該如何修改它以便我可以得到b2c2

回答

4

如果修改:select條款改爲:

foo = a.find(:all, 
     :joins => [:b, :c], 
     :select => "distinct b.b2 as b2_value, c.c2 as c2_value", 
     :conditions => {:a => {:a1 => Time.now.midnight. ... Time.now}}, 
     :group => "b.b2, c.c2") 

我相信你會檢索記錄數組。然後嘗試以下操作:

b2_value = foo.first["b2_value"] 

這應該檢索您正在查找的值。

另外,請注意查詢我的地方我用他們的列指定表名 - 我認爲這是更好的做法,也將避免不良查詢時,有重複的列名(例如,created_atid) 。

+0

謝謝!那工作 – Vignesh

0

嘗試

a.find(:all, :include => [:b, :c], :select => "distinct b2, c2", :conditions ...)