У меня есть три класса, которые нужно связать, и я не знаю, как это сделать.
Класс User, конечно для пользователя, Game представляет игру, GameTurn представляет поворот в игре. Игра принадлежит пользователю, пользователю, который инициировал игру, а GameTurn принадлежит пользователю, пользователю, который сыграл этот ход.
Что я хочу сделать, так это связать пользователя и игру через GameTurn, чтобы я мог быстро получить список игроков в игре и список игр, в которые играл игрок. Я просто не уверен, как это сделать и не хочу ничего портить, так как Game уже принадлежит пользователю. (несвязанные свойства были удалены там, где это было возможно, чтобы сделать определения более читабельными).
Вот соответствующие определения классов
class User
include DataMapper::Resource
property :id, Serial
property :name, String
property :created_at, DateTime
property :password, BCryptHash
has n, :gameTurns
end
class Game
include DataMapper::Resource
property :id, Serial
property :created_at, DateTime
property :finished, Boolean, :default=>false
property :finished_at, DateTime
property :length, Boolean #Number of turns
has n, :gameTurns
end
class GameTurn
include DataMapper::Resource
property :id, Serial
property :isText, Boolean
property :text, String
property :image, Text
belongs_to :game
belongs_to :user
end
Я вообще не очень разбираюсь в ORM, поэтому, если какая-либо из этих ассоциаций может быть лучше сделана другим способом, пожалуйста, дайте мне знать.
Спасибо