活动记录3使用嵌套表进行选择

时间:2011-03-27 10:44:19

标签: ruby ruby-on-rails-3 activerecord nested

我有这些课程:

class Game < ActiveRecord::Base
    has_many :offers
    #table has an integer-column 'season'
end

class Broker < ActiveRecord::Base
    has_many :offers
end

class Offer < ActiveRecord::Base
    belongs_to :game
    belongs_to :broker
end

我想从一个经纪人选择2009年游戏季节的所有优惠。 我试过了

Broker.first.offers.joins(:game).where(:game => {:season => 2009}).each do |o|
    puts o.inspect
end

但是这给了我

  

`在日志中救援':PGError:错误:缺少表“游戏”的FROM子句条目(ActiveRecord :: StatementInvalid)   第1行:...游戏“开启”游戏“。”id“=”提供“。”game_id“WHERE”游戏“。”se ...   :SELECT“offer”。* FROM“提供”INNER JOIN“游戏”ON“游戏”。“id”=“offer”。“game_id”WHERE“游戏”。“season”= 2009 AND(“offer”.broker_id = 1)

我该怎么做这样的选择,或者我在哪里可以找到更多相关信息?

1 个答案:

答案 0 :(得分:13)

where(:game => {:season => 2009})更改为where(:games => {:season => 2009})

您的表名为“games”(复数形式),where条件中的哈希键应该是表名,而不是关联名。