how to save array to database in rails

本秂侑毒 提交于 2019-12-28 14:05:08

问题


if i have params like this :

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

and when i create object to database field state_id not save to database?

how to save to database with format :

#<Scholarship id: 1, name: "test", state_id: "["1", "2", "3", "4"]">

how do that?

thanks before


回答1:


ActiveRecord::Base.serialize.

For example:

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"] }



回答2:


Also you can use PostrgreSQL support for array storing. (If you're using PG of course). Your migration will look like that:

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

But don't forget about validations.




回答3:


In your model have

serialize :state_ids

Here is a link to the documentation

That being said it looks like you're trying to pass state_ids parameters and save it in state_id, is this what you're intending to do?




回答4:


state_ids != state_id

you've got 2 different names for your attribute, so they don't line up. then use serialize :state_ids once you've renamed the column.

However if you're storing a list of state_ids, i'm going to guess you also have a states table, and so should look into using has_and_belongs_to_many association.



来源:https://stackoverflow.com/questions/23340222/how-to-save-array-to-database-in-rails

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!