34

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

4 Answers 4

43

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.

Sign up to request clarification or add additional context in comments.

Comments

26

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

1 Comment

You should use the plural form for arrays: state_ids
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?

Comments

0
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.

1 Comment

This is already corrected there.You should have responded there in the comment.Stick with the question

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.