例如,我有2个玩家游戏,未来同时拥有多个游戏。 我需要创建一个关联,让我有机会简单地调用user.games,它将返回所有涉及该用户的游戏,如first_user_id或second_user_id。
桌面游戏 台 first_user_id second_user_id表用户 ID
模型用户 has_namy ??
答案 0 :(得分: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”的列,并在User上执行has_many :games, through: :user_games
以获取所有游戏,无论玩家编号如何,然后使用查询,过滤,范围界定等等,只需找到玩家是某个数字的游戏。以下是与联接模型中列has_many ..., through: ...
的范围/条件相关的几个问题,以防您希望能够访问用户中的游戏列表,其中玩家是特定玩家#: