arrays - ¿Cómo guardar una matriz en Active Admin Rails 4?
model ruby-on-rails-4 (2)
Estoy usando Active Admin en Rails 4. En mi modelo, tengo un campo que es un tipo de matriz Postgres cuando estoy creando el objeto que está pasando en segundo plano, pero no está guardando en la base de datos. Entonces, ¿qué tengo que hacer para guardar el campo de la matriz en la base de datos a través de Active Admin?
Gracias
Has pirateado cosas, ya que parece que el administrador activo no lo admite de la caja.
Aunque esta respuesta es antigua, funciona: ¿Cómo se manejan los campos de edición serializados en un recurso de Active Admin?
Aquí hay un resumen de cómo manejé esta situación. Agregué un acceso al modelo que puede convertir la matriz en una cadena unida por un salto de línea y dividirla de nuevo en una matriz.
# app/models/domain.rb
class Domain < ActiveRecord::Base
serialize :names, Array
attr_accessor :names_raw
def names_raw
self.names.join("/n") unless self.names.nil?
end
def names_raw=(values)
self.names = []
self.names=values.split("/n")
end
end
luego, en mi recurso administrativo para el dominio, en lugar de usar el campo: names, utilicé el campo: names_raw. establecer este valor guardará los nombres Array con los nuevos valores.
# app/admin/domains.rb
form do |f|
f.inputs "Domain" do
f.input :names_raw, :as => :text
end
f.buttons
end
Aquí hay una versión similar pero aún más simple de una solución si no necesita una interfaz de usuario elegante para el administrador.
# app/model/thing.rb
def some_array_column= items
if items.is_a? String
super items.split(" ")
else
super items
end
end
Y
# app/admin/thing.rb
ActiveAdmin.register Thing do
index do
column "Things" { |t| (t.some_array_column || []).join(" ") }
end
end