0

例如,我有 2 名玩家的游戏,未来会同时进行不止一款游戏。我需要创建关联,让我有机会简单地调用 user.games,它将返回涉及该用户的所有游戏,如 first_user_id 或 second_user_id。

桌面游戏桌 first_user_id second_user_id

表用户id

模型用户 has_name ??

4

1 回答 1

1

我认为你要求的是:

class Game < ActiveRecord::Base
  has_one :first_user, foreign_key: :first_user_id, class_name: 'User'
  has_one :second_user, foreign_key: :second_user_id, class_name: 'User'
end

class User < ActiveRecord::Base
  has_many :first_user_games, foreign_key: :first_user_id, class_name: 'Game'
  has_many :second_user_games, foreign_key: :second_user_id, class_name: 'Game'

  def games
    first_user_games + second_user_games
  end
end

我认为这可能是一个不好的迹象,表明你需要这个,而且会很痛苦。相反,您可以只添加一个 UserGames 表和 UserGame 连接模型,在 UserGame 上放置一个名为“player_number”的列,然后has_many :games, through: :user_games在 User 上执行以获取所有游戏,而不考虑玩家编号,然后根据需要使用查询、过滤、范围等只找到玩家是特定数量的游戏。以下是与连接模型中列的范围/条件相关的一些问题has_many ..., through: ...,以防您希望能够访问用户中的游戏列表,其中玩家是特定玩家#:

于 2013-02-22T20:03:43.177 回答