このようなパラメータがある場合:
params["scholarship"] = {"name"=>"test", "state_ids"=>["1", "2", "3", "4"]}
また、データベースフィールドにオブジェクトを作成すると、state_idはデータベースに保存されませんか?
形式でデータベースに保存する方法:
#<Scholarship id: 1, name: "test", state_id: "["1", "2", "3", "4"]">
どうやって?
前に感謝します
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"] }
また、配列の格納にPostgreSQLサポートを使用できます。 (もちろん、PGを使用している場合)。移行は次のようになります。
add_column :table_name, :column_name, :string, array: true, default: []
しかし、検証について忘れないでください。
あなたのモデルでは
serialize :state_ids
これがドキュメントへの link です
それはあなたがstate_idsパラメータを渡してstate_idに保存しようとしているように見えると言われていますが、これはあなたがやろうとしていることですか?
state_ids != state_id
属性には2つの異なる名前があるので、それらは整列しません。列の名前を変更したら、serialize :state_ids
を使用します。
ただし、state_idのリストを保存している場合は、statesテーブルもあると思います。そのため、 has_and_belongs_to_many アソシエーションの使用を検討する必要があります。