ActiveRecord::AssociationTypeMismatch: 对于 has_many :through 关系
ActiveRecord::AssociationTypeMismatch: for has_many :through relationship
我正在为一个有很多玩家的游戏建模。玩家还可以玩多个游戏。我有用户、游戏和 played_game 作为连接 table.
这是我第一次涉足 has_many :through relationships 所以我希望这是一个简单的问题。或者至少是一个简单解决的问题。
class User < ActiveRecord::Base
has_many :played_games
has_many :games, :through => :played_games
end
class Game < ActiveRecord::Base
has_many :played_games
has_many :users, :through => :played_games
end
class PlayedGame < ActiveRecord::Base
belongs_to :users
belongs_to :games
end
这是我尝试向用户添加游戏(从控制台)时发生的情况:
User.first.played_games << Game.first
结果:
ActiveRecord::AssociationTypeMismatch: PlayedGame(#70279902258580) expected, got Game(#70279901145600)
好吧,我可能误会了。也许我应该尝试添加 games
到:
User.first.games << Game.first.id
结果:
NameError: uninitialized constant User::Games
对文档的任何帮助或 link 表示感谢。提前致谢!
问题似乎是您将 PlayedGame
上的 belongs_to
关联错误地定义为复数,而实际上它们应该是单数。将它们更改为:
class PlayedGame < ActiveRecord::Base
belongs_to :user
belongs_to :game
end
然后你应该可以使用:
User.first.games << Game.first
我正在为一个有很多玩家的游戏建模。玩家还可以玩多个游戏。我有用户、游戏和 played_game 作为连接 table.
这是我第一次涉足 has_many :through relationships 所以我希望这是一个简单的问题。或者至少是一个简单解决的问题。
class User < ActiveRecord::Base
has_many :played_games
has_many :games, :through => :played_games
end
class Game < ActiveRecord::Base
has_many :played_games
has_many :users, :through => :played_games
end
class PlayedGame < ActiveRecord::Base
belongs_to :users
belongs_to :games
end
这是我尝试向用户添加游戏(从控制台)时发生的情况:
User.first.played_games << Game.first
结果:
ActiveRecord::AssociationTypeMismatch: PlayedGame(#70279902258580) expected, got Game(#70279901145600)
好吧,我可能误会了。也许我应该尝试添加 games
到:
User.first.games << Game.first.id
结果:
NameError: uninitialized constant User::Games
对文档的任何帮助或 link 表示感谢。提前致谢!
问题似乎是您将 PlayedGame
上的 belongs_to
关联错误地定义为复数,而实际上它们应该是单数。将它们更改为:
class PlayedGame < ActiveRecord::Base
belongs_to :user
belongs_to :game
end
然后你应该可以使用:
User.first.games << Game.first