2013-06-27 12 views
7

Nie rozumiem, dlaczego pojawia się następujący błąd:ActiveRecord :: AssociationTypeMismatch Użytkownik oczekiwaniami dostał Fixnum

ActiveRecord::AssociationTypeMismatch: User(#29943560) expected, got Fixnum 

kiedy to zrobić w konsoli szyn: @game = Game.create(:player => 1060, :played => 1061)

Chcę stworzyć nowy Game dotyczący skojarzeń modeli poniżej.

class User < ActiveRecord::Base 
    has_many :game_as_player, :class_name => 'Game', :foreign_key => 'player_id' 
    has_many :game_as_played, :class_name => 'Game', :foreign_key => 'played_id' 
end 

class Game < ActiveRecord::Base 
    belongs_to :player, :class_name => 'User' 
    belongs_to :played, :class_name => 'User' 

    attr_accessible :player, :played, :score, :details, :viewed, :read 
end 

Jeśli ktoś ma pomysł ... Wielkie dzięki!

+0

Zgodnie z Twoim powiązaniem płatnik i rozgrywany reprezentują tego samego użytkownika (user_id). Nie sądzę, że powinieneś ustawiać różne identyfikatory dla odtwarzacza i grać. – usha

Odpowiedz

18

To po prostu mówi, że chce użytkownika i dajesz Fixnum

Powinieneś zrobić coś

@game = Game.create(:player => Player.find(1060), :played => Player.find(1061)) 

lub, jeśli chcesz, aby dać użytkownikom identyfikatorów

@game = Game.create(:player_id => 1060, :played_id => 1061) 
Powiązane problemy