активную запись 3 выберите с помощью вложенных таблиц - PullRequest
1 голос
/ 27 марта 2011

У меня есть эти классы:

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: ... games "ON" games "." Id "=" offer "." Game_id "WHERE" game "." Se ... : ВЫБРАТЬ «предложения». * ИЗ »предлагает« ВНУТРЕННИЕ СОЕДИНЕНИЯ »игры« ВКЛ »игры». «Id» = «предложения». «Game_id» ГДЕ «игра». «Сезон» = 2009 И («предложения» .broker_id = 1)

как мне сделать такой выбор или где я могу найти дополнительную информацию по этому вопросу?

1 Ответ

13 голосов
/ 27 марта 2011

Изменить where(:game => {:season => 2009}) на where(:games => {:season => 2009})

Ваша таблица называется «games» (во множественном числе), а хеш-ключ в условии where должен быть именем таблицы, а не именем ассоциации.

...