2013-06-27 3 views
7

Ich verstehe nicht, warum ich die folgende Fehlermeldung erhalten:Active :: AssociationTypeMismatch: User erwartet, bekam Fixnum

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

, wenn ich das tun Konsole in Schienen: @game = Game.create(:player => 1060, :played => 1061)

Ich möchte nur erstellen eine neue Game in Bezug auf Modellverknüpfungen unten.

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 

Wenn jemand eine Idee ... Vielen Dank hat!

+0

geben wollen Entsprechend Ihrer Zuordnung repräsentieren Zahler und Spieler denselben Benutzer (user_id). Ich denke nicht, dass Sie unterschiedliche IDs für den Spieler setzen und spielen sollten. – usha

Antwort

18

Es sagt nur, dass es ein Benutzer wünschen und Sie geben ein Fixnum

sollten Sie etwas tun, wie

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

Oder, wenn Sie die Benutzer von ids

@game = Game.create(:player_id => 1060, :played_id => 1061)