我有三个需要相关的课程,我不知道该怎么做。
User类,当然是针对用户,Game代表游戏,GameTurn代表游戏中的转折。游戏属于用户,即发起游戏的用户,而GameTurn属于用户,即玩转的用户。
我想要做的是通过GameTurn关联用户和游戏,这样我就可以快速获得游戏中的玩家列表,以及玩家参与的游戏列表。我只是不知道如何做到这一点因为游戏已经属于用户,所以不想弄乱任何东西。 (尽可能删除不相关的属性,以使定义更具可读性。)
以下是相关的类定义
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一般都缺乏经验,所以如果以其他方式做得更好,请告诉我。
由于
答案 0 :(得分:2)
我从未使用datamapper
,但我相信你需要的是像
class User
# ...
has n, :gameTurns
has n, :games, :through => :gameTurns
end
class Game
# ...
has n, :gameTurns
has n, :users, :through => :gameTurns
end
class GameTurn
# ...
belongs_to :game
belongs_to :user
end