我正在尝试设置一个类似于游戏的 Rails 应用程序。该应用程序有用户,每个用户都有他们可以创建的 Pawn。用户可以搜索其他用户和他们创建的 Pawn,如果愿意,可以使用自己的 Pawn 挑战另一个用户。然后,被挑战的用户可以接受/拒绝挑战。
现在我可以为用户添加/删除 Pawns,我的模型如下所示:
class User < ActiveRecord::Base
has_many :pawns, dependent: :destroy
和
class Pawn < ActiveRecord::Base
belongs_to :user
现在,如果 User1 想要挑战由 User2 创建的 Pawn,他查看 User2 的 Pawn 列表并单击他想要的 Pawn 的“挑战”按钮。然后,用户 1 必须选择他的一个 Pawns 用于挑战并单击保存。现在 User2 需要接受/拒绝挑战。
我很难弄清楚应该如何设置挑战。我的想法是每个 Pawn 都会有一个自我参照的多对多关系,就像建立友谊关系一样。但是,我不知道我是否应该考虑与用户或 Pawn 相关的挑战。
模拟这样的东西的最佳方法是什么?
编辑:
这是我要完成的工作的图表。我definitley认为我需要某种关联设置。结果将保存该挑战的该 Pawn 的统计信息(例如 time_spent、clicks_made 等)。挑战也会有一个获胜者或类似内容的列。