使用
def change
create_table :something do |t|
t.text :keyword, array: true, default: []
end
end
我想制作类似[[“a”, 1 ],[“b”, 5 ]的数据。
它出人意料地工作了。喜欢,
e.keyword = [[“a”,1],[“b”,2]] => [[“a”,1],[“b”,2]]。
这是在rails4中实现它的正确方法吗?
答案 0 :(得分:1)
在不了解您的用例和应用程序的情况下,我建议您考虑是否有必要为要存储在数组中的任何数据创建新模型。
这样做的原因是它允许您在has_many
和数组之间使用something
关系,您可以轻松地创建和测试数组。
class MyArray < ActiveRecord::Base
validates :text, presence: true
validates :number, presence: true, numericality: { only_integer: true }
belongs_to :something
end
您可以根据需要更改课程验证。
class Something < ActiveRecord::Base
has_many :my_arrays
end
再次,扩展课程以满足您的需要。
迁移将如下所示:
def change
create_table :my_arrays do |t|
t.text :text
t.integer :number
t.belongs_to :something
end
end
为数组使用单独的类允许您使用Rails的所有优秀功能来处理something
与数组之间的关联,并且以后更容易处理数据({{ 1}}而不是something.my_arrays.first.text
)。如果需要,可以使用验证来控制放入阵列的内容。
想一想。