【发布时间】:2018-04-16 10:34:25
【问题描述】:
我需要存储动态数量的整数属性 (1-8)。我将它们存储在数据库表的各个列中,例如:
attribute_1, attribute_2, ..., attribute_8
当方法需要引用这些模型以及笨重的数据库表和架构时,这会导致模型相当混乱。
这些被分配了默认值(但可以在表单上覆盖),并代表用户的唯一标识符。
例如,在发酵罐中混合在一起之前,啤酒最多由八批组成。酿酒商可能希望返回并通过其唯一标识号引用其中任何一个。在创建新 Brew 时,我根据最后一个最高值分配这些唯一值。但是,用户可能希望将这些默认值覆盖为其他一些数字。
在大多数情况下(较小的啤酒厂),他们可能只使用前两个,但一些较大的啤酒厂会使用全部八个。
必须有更好的方法来存储这些属性,而不是使用八个不同的属性,它们的名称相同,末尾有一个数字。
我正在使用 MySQL。是否有一种简单/简洁的方法来存储数组或 JSON 哈希,但仍然能够在表单上编辑这些值?
【问题讨论】:
-
从 MySQL 5.7.8 开始,MySQL 支持native JSON data type。 ActiveRecord 还可以“序列化”将数据转换为 YAML 或 JSON 并将其存储为字符串的列。 api.rubyonrails.org/classes/ActiveRecord/AttributeMethods/…
-
但我会考虑您是否不应该使用两个单独的表并在两者之间建立关联。
标签: mysql ruby-on-rails database activerecord