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

tar*_*djo 22 arrays ruby-on-rails params

如果我有这样的参数:

params["scholarship"] = {"name"=>"test", "state_ids"=>["1", "2", "3", "4"]}
Run Code Online (Sandbox Code Playgroud)

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

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

#<Scholarship id: 1, name: "test", state_id: "["1", "2", "3", "4"]">
Run Code Online (Sandbox Code Playgroud)

怎么办?

谢谢你

cnn*_*nnr 27

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

add_column :table_name, :column_name, :string, array: true, default: []
Run Code Online (Sandbox Code Playgroud)

但是不要忘记验证.


Rub*_*ist 18

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"] }
Run Code Online (Sandbox Code Playgroud)

  • 您应该对数组使用复数形式:`state_ids` (2认同)