【问题标题】:ActiveRecord::AssociationTypeMismatch: User expected, got FixnumActiveRecord::AssociationTypeMismatch:用户预期,得到了 Fixnum
【发布时间】:2013-06-27 13:50:15
【问题描述】:

我不明白为什么会出现以下错误:

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

当我在 Rails 控制台中这样做时:@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

如果有人有想法... 非常感谢!

【问题讨论】:

  • 根据你的关联,payer和player代表同一个用户(user_id)。我认为您不应该为播放器和播放器设置不同的 ID。

标签: ruby-on-rails activerecord ruby-on-rails-3.2


【解决方案1】:

它只是说它想要一个用户,你给一个 Fixnum

你应该做类似的事情

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

或者,如果你想通过 id 给用户

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-01
    • 2012-06-08
    • 1970-01-01
    相关资源
    最近更新 更多