我是一个PHP程序员来到Rails,似乎无法想象这个简单的Active Record调用。基本上,我有两个表,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"
我所能做的就是选择所有市场,然后单独查询以查询有关每个市场的交易所信息:
market = Market.first
exchange = Exchange.where(:id => market.exchange_id)
必须有一种更简单的方法。这有意义吗?
答案 0 :(得分:2)
如果您想要所有市场,包括他们的交易所,那么:
@markets = Market.includes(:exchange)
如果您想要一个单一的交易所及其所有市场,那么:
@exchange = Exchange.includes(:markets).first
@markets = @exchange.markets
如果您需要手动传入ID,请执行以下操作:
@markets = Market.where("exchange_id = ?", put_id_here)
以下是有关eager loading associations in Rails的更多信息。