rails permit before_action array application after_action ruby-on-rails arrays params

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 .