如何在rails中将数组保存到数据库

如果我有这样的参数:

params["scholarship"] = {"name"=>"test", "state_ids"=>["1", "2", "3", "4"]} 

当我创建对象到数据库字段state_id不保存到数据库?

如何使用格式保存到数据库:

 # 

怎么办?

谢谢你

ActiveRecord :: Base.serialize 。

例如:

 class User < ActiveRecord::Base serialize :scholarship end user = User.create(:scholarship=> { "name" => "test", "state_ids" => ["1", "2"]}) User.find(user.id).scholarship# => { "name" => "test", "state_ids" => ["1", "2"] } 

您还可以使用PostrgreSQL支持数组存储。 (如果你当然使用PG)。 您的迁移将如下所示:

 add_column :table_name, :column_name, :string, array: true, default: [] 

但是不要忘记validation。

在你的模型中有

 serialize :state_ids 

这是文档的链接

这就是说你看起来想要传递state_ids参数并将其保存在state_id中,这是你打算做的吗?

 state_ids != state_id 

你的属性有2个不同的名字,所以它们没有对齐。 一旦重命名了列,就使用serialize :state_ids

但是,如果你要存储一个state_ids列表,我猜你也有一个状态表,所以应该考虑使用has_and_belongs_to_many关联。