ruby-on-rails - permit - routes in ruby on rails
Cómo guardar la matriz en la base de datos en los carriles (4)
si tengo params como este
params["scholarship"] = {"name"=>"test", "state_ids"=>["1", "2", "3", "4"]}
¿Y cuando creo un objeto en el campo de base de datos state_id no se guarda en la base de datos?
Cómo guardar en la base de datos con formato:
#<Scholarship id: 1, name: "test", state_id: "["1", "2", "3", "4"]">
como hacer eso
gracias antes
En tu modelo tienes
serialize :state_ids
Aquí hay un link a la documentación.
Dicho esto, parece que estás intentando pasar parámetros state_ids y guardarlo en state_id, ¿es esto lo que pretendes hacer?
También puede utilizar el soporte de PostrgreSQL para el almacenamiento de matrices. (Si estás usando PG por supuesto). Tu migración se verá así:
add_column :table_name, :column_name, :string, array: true, default: []
Pero no te olvides de las validaciones.
ActiveRecord::Base.serialize .
Por ejemplo:
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"] }
state_ids != state_id
tienes 2 nombres diferentes para tu atributo, por lo que no se alinean. luego use serialize :state_ids
una vez que haya cambiado el nombre de la columna.
Sin embargo, si está almacenando una lista de state_ids, voy a adivinar que también tiene una tabla de estados, por lo que debería considerar el uso de la asociación has_and_belongs_to_many .