2017-06-07 24 views
-2

Ich habe vor kurzem über den json-Datentyp in Rails 5 gelernt, mit dem Sie einen Hash in einer PostgreSQL-Datenbank speichern können. Aus irgendeinem Grund kann ich keine vollständige Liste von Rails 5 Datentypen finden. Gibt es einen Datentyp, mit dem Sie ein Array speichern können?Kann ein Rails-Attribut ein Array sein?

Derart, dass example_record.array_datatype => ["1", "2", "3"]

+2

* "Aus irgendeinem Grund kann ich keine vollständige Liste der Rails 5 Datatypes finden" * - Wirklich ?? [Dies ist das erste Ergebnis einer Google-Suche] (https://stackoverflow.com/a/17918118/1954610). –

+2

Und [hier ist die vollständige Liste] (https://github.com/rails/rails/blob/2b96d5822bfe407be7589e293f3265c0c7a6726c/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb#L73-L114) der unterstützten Datentypen in Schienen 5, wie von heute. –

+2

Sie können auch überprüfen [Schienen Guides] (http://edgeguides.rubyonrails.org/active_record_postgresql.html#array) – Gerry

Antwort

1

ja Ja. Hier ist ein Beispiel der Migration eine ganze Zahl und ein String-Array zu einem Modell hinzuzufügen:

class AddToBooks < ActiveRecord::Migration 
    def change 
    add_column :books, :category_ids, :integer, array: true, default: [], null: false 
    add_column :books, :subjects , :text , array: true, default: [], null: false 
    end 
end 

Für Arrays von Strings, :text als Typ verwenden.

Ich empfehle dringend, ein leeres Array anstelle von Null zu verwenden, um "keine Daten" anzuzeigen, und diese Migration stellt sicher, dass.

+0

Was macht 'null: false'? Es macht leere Arrays anstelle von null? –

+0

@JoeMorano Er fügt eine Datenbankeinschränkung hinzu. Wie bei Ihrer ursprünglichen Frage ist Google Ihr Freund. –

+0

Ja, das bedeutet, dass Sie in dieser Spalte keinen Nullwert speichern können. –

Verwandte Themen