Schienen: Wie zu handhaben "Attribut soll ein Array, sondern String" - Fehler?
Ich habe eine Tabelle mit einer Spalte vom Typ text.
Es gibt einen kleinen string in es, die serialisiert werden sollen, als array
serialize :image_urls, Array
Es gibt Zeiten, wenn SQL ist einfach schneller für das einfügen von Daten.
Wenn dies der Fall ist, Tue ich das einfügen als string
["image1.jpg", "image2.jpg"]
Da bin ich auf das einfügen einer Zeichenfolge meiner Rails-app stürzt ab, wenn es versucht die Daten zu Lesen, mit der folgenden Fehlermeldung:
Attribute was supposed to be a Array, but was a String
Gibt es eine Möglichkeit, um nicht diesen Fehler geworfen, oder, um es zu fangen und konvertieren Sie die Daten?
Ich meine das konvertieren der Zeichenfolge in ein array ist nur ein einfacher Anruf, so sollte dies einfach sein. Ich weiß nur nicht wo, oder wie, um es zu erreichen.
Ich Art von denken, überschreiben object_from_yaml, aber ich bin nicht sicher, wo diese Arbeit zu tun.
Bin ich in die richtige Spur?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aus der Handbuch:
Also die Spalte enthalten soll YAMLized version Ihrer
image_urls
aber'["image1.jpg", "image2.jpg"]'
ist nicht ein YAML-array. Wenn Sie möchten, muck auf, um mit dem raw-serialisierten Daten sollten Sie mit so etwas wiegenerieren string.
Oder besser, stoppen Sie die Verwendung
serialize
insgesamt zu Gunsten einer separaten Tabelle.In Rails 4 es funktionierte für mich ohne
.to_yaml
nur Hinzugefügt, starke params alsimage_urls: []
können Sie versuchen, wie diese: {:serialized_attribute_name => [ ]}. Und vergessen Sie nicht, fügen Sie diese im entsprechenden controller so stark Parametern. Es hilft mir, wenn ich litt unter demselben problem.