0

私は PHP プログラマーとして Rails にやってくるのですが、この単純な Active Record の呼び出しが理解できないようです。基本的に、私は 2 つのテーブルを持っていexchangesますmarkets。それらは次のとおりです。

class Market < ActiveRecord::Base
  attr_accessible :date_created, :exchange_id, :market_name, :market_year

  belongs_to :exchange 

end

class Exchange < ActiveRecord::Base
  attr_accessible :date_created, :exchange_name, :exchange_type

  has_many :markets

end

Marketsすべてのを、同じ呼び出しで、exchangeそれらに関するすべての情報を取得したいと考えていますmarkets

PHP では、これは次のようになります。"SELECT * FROM markets, exchanges WHERE markets.id>0"

私にできることは、すべての市場を選択してから、個別にクエリを実行して、それらの各市場に関する Exchange 情報を検索することだけです。

market = Market.first
exchange = Exchange.where(:id => market.exchange_id)

もっと簡単な方法があるはずです。これは理にかなっていますか?

4

1 に答える 1

2

取引所を含むすべての市場が必要な場合は、次のようにします。

@markets = Market.includes(:exchange)

単一の取引所とそのすべての市場が必要な場合は、次のようにします。

@exchange = Exchange.includes(:markets).first
@markets = @exchange.markets

ID を手動で渡す必要がある場合は、次のようにします。

@markets = Market.where("exchange_id = ?", put_id_here)

Rails でのイーガー ロード アソシエーションに関する詳細情報を次に示します。

于 2013-02-14T01:30:02.123 に答える