2つのモデルHorseとRaceがあります。新しいRails 3クエリインターフェイスを使用してjoinsテーブルの情報を表示する方法
class Horse < ActiveRecord::Base
has_many :races
end
class Race < ActiveRecord::Base
belongs_to :horse
end
ここで、馬の名前とすべてのレースを確認するために、新しいレール3クエリインターフェイスを使用します。
Horse.joins(:races) # I get an active record relation that only displays horse data
Horse.joins(:races).count #Yields 31 the exact number of races.
Horse.joins(:races).all #Yields an Array of 31 Horse, but no race data
Horse.joins(:races).all.select("horses.*, starters.*") #Yields active record relation with only Horse data.
質問1:完全な馬とのレースレコードを生成する正しいクエリは何ですか。
質問2:馬の名前とすべてのレースレコードを得る正しいクエリとは何ですか?
私はこれが非常に基本的だと知っていますが、私は困惑しています。私はその関係に間違ったことをしていると感じています。
返信いただきありがとうございます。だからブロックとputsが必要です。私はIRBでこれを1本(2本)のライナーで達成できると思った。たとえば、Horse.includes(race).select( "horses。*、race。*")。おそらくそうではありません。再度、感謝します。 – Mutuelinvestor
ブロックとputsは必ずしも必要ではありません。それは私が入力したばかりのやり方です。確かに1ライナーで達成可能です。 'stuff = Horse.each {| h | "#{h.name}:#{h.races.map(&:name).join( '、')}"} 'も動作します。 – bioneuralnet