Guardar matriz de identificación de clave externa en has_many a través del diseño

Cuando envío el formulario de creación de estilo, me gustaría crear un nuevo estilo con algunas características. Las características se eligen de un cuadro de selección múltiple que se rellena a partir de una tabla de características en la base de datos. El a través de una la tabla debe actualizarse adecuadamente, según las características elegidas de la selección múltiple.

Puedo hacer lo siguiente dentro de la consola de Rails:

@style = Style.first
@style.feature_ids = ['','2','4','6']

Después de escribir lo anterior, veré mi a través de una tabla actualizada con tres filas, el style_id y el feature_id apropiados.

En mi estilo crear formulario Tengo lo siguiente:

<%= m.input :feature_ids, :label => "Features", :collection => @features, :input_html => { :multiple => true } %>

Al enviar el formulario, recibo el siguiente error de PG:

PG::Error: ERROR:  column "feature_id" is of type integer but expression is of type character varying at character 96
HINT:  You will need to rewrite or cast the expression.
: INSERT INTO "stylefeatures" ("created_at", "feature_id", "style_id", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id"

Del hash de parámetros:

{"utf8"=>"✓",
 "authenticity_token"=>"lkdI9jhlhPW1P2Tyb8jFMKFM/kVXvgcJfSkL0qNH7xk=",
 "style"=>{"name"=>"123",
 "feature_ids"=>["",
 "2",
 "4",
 "6"],
 "commit"=>"Create Style"}

preguntado el 22 de mayo de 12 a las 10:05

1 Respuestas

Tus @features es una colección de cadenas, cámbiela a un número entero y estará bien (de eso se queja su base de datos).

contestado el 22 de mayo de 12 a las 10:05

Sí, reemplacé @features con Feature.all en mi formulario y funciona. - Abram

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.