将玩家统计信息(每个游戏不同)保存到Rails中的数据库

时间:2016-07-14 18:43:28

标签: ruby-on-rails activerecord devise

我可能找不到任何相关内容,因为我不知道如何描述它。

我有以下设置:

  • 用户帐户可以包含包含基本信息(姓名,年龄)的个人资料,可选,并且还可以有没有关联帐户的个人资料。
  • 个人资料可以链接到多个游戏配置文件(每个游戏一个)
  • 游戏配置文件有一个游戏名称,应该是我可以找到玩家统计数据的地方。

现在,对于不同的游戏,有不同的统计数据。我真的需要为每个游戏创建另一个具有相关属性的模型,还是有更聪明的方法来做到这一点?

2 个答案:

答案 0 :(得分:2)

@Okomikeruko对不同属性所描述的不同游戏统计数据提出了一个很好的观点。您应该收到警告,但hash in string方法会使查询和索引此表变得复杂。

备选方案是有两个用于保存游戏统计数据的表,一个是header表,其中包含游戏会话日期,持续时间等属性以及detail表,保持游戏特定属性:

# pseudocode:

GameProfile
  has_many :game_profile_details
end

GameProfileDetail
  belongs_to :game_profile

  stat_name: string
  stat_value: string
end

答案 1 :(得分:1)

您可以创建一个包含特定游戏统计信息的通用模型。

由于每个游戏都会有一些相同的统计数据(名称?,得分高?),您可以轻松设置它们。

棘手的部分是如何处理不同的游戏统计数据。一个游戏可能有“最佳时间”,而另一个游戏可能会“轮流使用”。

要处理此问题,您可以将其他数据保存为字符串中的哈希值。

因此,它会在一个游戏中保存meta_data: "{'best_time' => '0:04:23.6', 'other' => 'thing'}",但您不需要为不使用游戏的游戏留下空best_time字段。

然后当您根据游戏加载数据时,您可以编码

<%= @gamedata.meta_data.best_time %>
# returns "0:04:23.6"