2010-08-14 19 views
12

Ich habe eine etwas einzigartige Situation, wenn ich ein Formular mit einer Checkbox für jeden Staat (wie in US-Staaten, so 50 Staaten sagen) hatte, will ich nicht wirklich Hinzufügen von 50 Spalten zu meiner Datenbank, wie kann ich sie in einem Array in einer einzigen Spalte speichern?Speichern eines Arrays in der Datenbank in Ruby auf Schienen

Ich fühle mich wie ich habe dies getan gesehen, aber ich habe es schwer, meinen Finger auf die Implementierung.

+0

Sie könnten 'states * '; und' states.split'; ''verwenden und sicherstellen, dass Semikolons nicht in' states' erscheinen. – Zaz

Antwort

21

ActiveRecord::Base.serialize. Gerade aus den Schienen Dokumente:

class User < ActiveRecord::Base 
    serialize :preferences 
end 

user = User.create(:preferences => { "background" => "black", "display" => large }) 
User.find(user.id).preferences # => { "background" => "black", "display" => large } 
+0

Ich mag deine Antwort Ich habe es gerade schwer, es zu bekommen, das Array jetzt in der Spalte zu speichern. –

+4

Wenn Sie eine vorhandene Spalte verwenden, müssen Sie möglicherweise den Spaltentyp folgendermaßen ändern: Text, der in Ihr Array passt. (Überprüfen Sie Ihre_a.to_yaml.length.) – jdeseno

4

Sie könnten eine States-Tabelle mit viele zu viele Beziehung zwischen Benutzer und Status auch einrichten. Dies würde Abfragen effizienter machen.

Verwandte Themen