2011-08-12 3 views
0

ゾンビ(id、name、graveyard)と武器(id、name、strength、zombie_id)という2つのテーブルがあるとします。武器:belongs_toゾンビゾンビの名前が「ジャック」の武器を見つける最も簡単な方法は何ですか?Railsでのテーブル接続による検索

ありがとうございます!

答えて

0
Weapon.includes(:zombie).where("zombies.name = ?", "jack") 

これは、コレクションを返すので、あなただけの最初のをしたい場合は、そのクエリへ.firstを追加します。

結論として、includeはjoinを行うだけでなく、where節でそれを参照することができるようにincludeテーブルを保持します。

+0

最後に.first()を追加すると、何も見つからない場合に例外が発生しませんか? – mkk

+0

.includes()は何をしますか?それはなぜ必要なのですか? ':zombie => {:name =>" jack "}' – joshim5

+0

@mkkいいえ、空の配列を返すので、 '' zombie.name =? ''、 ] ')、' .first'を呼び出すと 'nil'だけが返されます。 – MrDanA