在Rails中以belongs_to和has_many关系从多个表中获取数据

时间:2013-02-14 01:23:24

标签: sql ruby-on-rails ruby rails-activerecord

我是一个PHP程序员来到Rails,似乎无法想象这个简单的Active Record调用。基本上,我有两个表,exchangesmarkets。它们如下:

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)

必须有一种更简单的方法。这有意义吗?

1 个答案:

答案 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的更多信息。