Проблема AssociationTypeMismatch при сохранении данных - PullRequest
2 голосов
/ 06 октября 2009

в предыдущем вопросе я был озадачен .. но переполнение стека дало решение

две мои модели

class Team < ActiveRecord::Base
  has_many :fixtures, :finder_sql => 'SELECT * FROM fixtures where (home_team = #{id} or away_team = #{id})'
  has_many :home_fixtures, :class_name => "Fixtures", :foreign_key => :home_team
  has_many :away_fixtures, :class_name => "Fixtures", :foreign_key => :away_team
  has_many :teamalias
end

class Fixture < ActiveRecord::Base
  belongs_to :league
  belongs_to :selection
  has_many :selection

  named_scope :for_team_id, lambda{|team_id| {:conditions => ['(home_team = ? or away_team = ?)', team_id, team_id]} }
  belongs_to :home_team, :class_name => "Team", :foreign_key => :home_team
  belongs_to :away_team, :class_name => "Team", :foreign_key => :away_team


  def fix_list
    [home_team.title, "Draw", away_team.title]
  end
end

взято из Многоуровневые ассоциации в рельсах

но я опять озадачен - я пытаюсь сохранить прибор, основанный на последнем решении в первом ответе выше, и получаю несоответствие типов:

Команда (# 38391330) ожидается, получила строку (# 1242130)

не знаю, что здесь делать, пожалуйста, помогите.

edit- db migrations

Вот миграция

класс CreateFixtures

  t.timestamps
end

конец

def self.down drop_table: расписание конец конец

класс CreateTeams

  t.timestamps
end

конец

def self.down drop_table: команды конец конец

класс AddResultToFixture

def self.down remove_column: fixtures,: result конец конец

1 Ответ

1 голос
/ 06 октября 2009

ваша форма, вероятно, имеет fixture[home_team], который является выбором, который передает team.id

так что когда вы делаете

@fixture = Fixture.new(params[:fixture])
@fixture.save

вы звоните home_team= team.id team.id - строка, но home_team должен быть объектом Team

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