【问题标题】:Rails model containing list of integers包含整数列表的 Rails 模型
【发布时间】:2013-03-28 12:57:30
【问题描述】:

如何将整数列表作为 Rails 模型的属性?我试过谷歌搜索,但没有任何结果。我真的必须创建一个单独的模型来保存整数然后使用 has_many 关系吗?

如果我想在模型中有多个列表怎么办?我是否为每个列表创建单独的模型?

我正在尝试创建模型来表示名为 Ra 的棋盘游戏的状态。我想出的变量是

Game
    epoch - int
    currentturn - int
    auctionturn - int
    ratrack - int
    centralsun  - int
    auctiontrack - list[int]
    playerdata - list[playerdata]

PlayerData
    name - string
    suns - list[int]
    nextsuns - list[int]
    gods - int
    pharohs - int
    niles - int
    floods - int
    gold - int
    civilization - list[int]
    monuments - list[int]
    fame - int

但我不确定如何实现这一点。另外,有人有改进设计的建议吗?

【问题讨论】:

  • 如果你使用 mongoid,你可以保存整数数组。对于 active_record,你不能保存数组。如果您不想创建新模型,您可以通过连接整数将整数保存为字符串。例如“1,2,3,4”。您可以覆盖该字段的 attr_accessor 以给您一个整数数组并在保存之前将其转换为字符串,但这种方法是一种 hack。我认为,你应该创建一个通用模型并将其关系定义为belongs_to多态(可能属于玩家数据或游戏)。
  • @surase 如何在 Mongoid 中保存数组?
  • 字段::some_field,类型:数组,默认:[]

标签: ruby-on-rails-3 model


【解决方案1】:

您可以使用serialize 将任何对象存储在数据库字段中: http://apidock.com/rails/ActiveRecord/AttributeMethods/Serialization/ClassMethods/serialize

顺便说一下,R​​ails 4 将添加对实际数组对象的支持(至少在 PostGres 中): http://reefpoints.dockyard.com/ruby/2012/09/18/rails-4-sneak-peek-postgresql-array-support.html

【讨论】:

    猜你喜欢
    • 2017-08-06
    • 2016-12-23
    • 2018-02-18
    • 2011-06-10
    • 2012-08-14
    • 1970-01-01
    • 2013-08-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多