3

Railsは初めてです。私は3つのテーブルを持っていaますb、、c

b2つの列があります: b1b2

c2つの列があります:c1c2

a3つの列があります: a1b1(外部キー)および c1(外部キー)

distinct (b2, c2)の値を指定してペアを取得したい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

取得できるようにこれを変更するにはどうすればよいb2ですc2か?

4

2 に答える 2

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_atまたはid)。

于 2012-05-07T22:07:17.523 に答える
0

試す

a.find(:all, :include => [:b, :c], :select => "distinct b2, c2", :conditions ...)
于 2012-05-07T21:56:02.450 に答える