📜  rails 将数组存储在数据库中 - Ruby (1)

📅  最后修改于: 2023-12-03 15:04:47.247000             🧑  作者: Mango

Rails 将数组存储在数据库中 - Ruby

在Rails中,我们经常需要将数组数据存储在数据库中。这时候,我们可以使用ActiveRecord提供的序列化功能将数组数据序列化为字符串并将其存储在数据库中。

序列化数组

将数组存储在数据库中,需要将数组数据序列化为字符串。可使用Ruby中的to_yaml方法将数组序列化为YAML格式的字符串。

arr = ["apple", "banana", "cherry"]  # 定义一个数组
serialized_arr = arr.to_yaml  # 序列化数组为字符串
#=> "---\n- apple\n- banana\n- cherry\n"
在模型中使用序列化

在Rails中,我们经常使用ActiveRecord来处理数据,所以我们需要在模型中配置序列化。使用serialize方法,我们可以指定某个字段使用序列化。

class Product < ActiveRecord::Base
  serialize :colors
end

对于上面的模型,我们可以将一个包含多个颜色的数组存储在colors字段中。

product = Product.new(:name => 'Apple iPhone X', :colors => ["Space Gray", "Silver"])
product.save
#=> INSERT INTO `products` (`name`, `colors`) VALUES ('Apple iPhone X', '---\n- Space Gray\n- Silver\n')

当我们从数据库中检索Product对象时,colors字段的值将自动反序列化为数组。

product = Product.first
product.colors  #=> ["Space Gray", "Silver"]
总结

如上,我们可以使用Rails提供的序列化功能将一个数组数据存储在数据库中。我们可以使用to_yaml方法将数组序列化为字符串,并使用serialize方法在模型中配置序列化。


参考链接