не могу использовать метод поиска Activerecord с ассоциациями - PullRequest
0 голосов
/ 05 мая 2010

вот мои модели:

#game 
class Game < ActiveRecord::Base
  #relationships with the teams for a given game
  belongs_to :team_1,:class_name=>"Team",:foreign_key=>"team_1_id"
  belongs_to :team_2,:class_name=>"Team",:foreign_key=>"team_2_id"

  def self.find_games(name)
  items = Game.find(:all,:include=>[:team_1,:team_2] , :conditions => ["team_1.name = ?", name] )     
  end
end

#teams
class Team < ActiveRecord::Base
  #relationships with games
  has_many :games, :foreign_key  =>'team_1'
  has_many :games, :foreign_key  =>'team_2'
end

Когда я запускаю Game.find_games ("real"), я получаю: ActiveRecord :: StatementInvalid: SQLite3 :: SQLException: такого столбца нет: team_1.name

Как я могу решить проблему, я думал, что использование: include решит проблему.

1 Ответ

0 голосов
/ 05 мая 2010

Team_1 не является именем таблицы. Условия не работают с ассоциациями, как определено в ruby, но с самими таблицами. Условие должно указывать: :conditions => ["teams.name = ?", name]

Кроме того, я не думаю, что класс команд правильный, вы определенно не можете определить игры дважды, и внешние ключи должны совпадать с принадлежащими им:

#teams
class Team < ActiveRecord::Base
  #relationships with games
  has_many :team_1_games, :class_name => "Game", :foreign_key  =>'team_1_id'
  has_many :team_2_games, :class_name => "Game", :foreign_key  =>'team_2_id'
end

Есть гораздо лучший способ сделать это, но я не могу вспомнить это на макушке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...