2013-06-27 3 views
7

Я не понимаю, почему я получаю следующее сообщение об ошибке:ActiveRecord :: AssociationTypeMismatch: Пользователь ожидается, получил Fixnum

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

, когда я делаю что в рельсах консоли: @game = Game.create(:player => 1060, :played => 1061)

Я просто хочу, чтобы создать новый Game относительно ассоциаций моделей ниже.

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 

Если у кого есть идея ... Спасибо большое!

+0

Согласно вашей ассоциации, плательщик и проигрыватель представляют одного пользователя (user_id). Я не думаю, что вы должны устанавливать разные идентификаторы для игрока и играть. – usha

ответ

18

Он просто говорит, что хочет пользователь, и вы дать Fixnum

Вы должны сделать что-то вроде

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

Или, если вы хотите, чтобы дать пользователям по идентификаторам

@game = Game.create(:player_id => 1060, :played_id => 1061) 
Смежные вопросы