我正在使用Rails 5应用程序进行激战2,我试图想出一种方法来序列化和存储游戏中的所有项目,而无需复制代码或表格列。该游戏有一个公共API来获取项目,记录 在这里:https://wiki.guildwars2.com/wiki/API:2/items
正如您所看到的,所有项目共享多个数据,如ID,值,稀有度等,但随后也会根据其类型分为具体细节。
我一直在寻找解决方案,而且我找到了一些答案,但没有一个能够解决这个问题。
基本上,我想要的只是一个" Item"使用公共列的模型,然后是"详细信息"将从相关表中获取特定于类型的数据的属性。
创建此架构的最佳方法是什么?
答案 0 :(得分:0)
一种可能的解决方案: 在详细信息(文本)列上使用#serialize
class Item
serialize :details, Hash
end
一个巨大的缺点是,如果您需要查询详细信息数据,这是非常低效的。这基本上绕过了数据库的本机抽象。
答案 1 :(得分:0)
我最近处于类似情况。我用Sequel而不是ActiveRecords解决了。 你可以在这里找到它: https://github.com/TalentBox/sequel-rails 一个实例: http://www.matchingnotes.com/class-table-inheritance-in-rails.html 祝你好运