Railsy nie obsługują typu danych ENUM
po wyjęciu z pudełka. Dzieje się tak, ponieważ nie wszystkie bazy danych obsługują ten typ danych. Zauważyłem, że powszechnym sposobem radzenia sobie z wartościami ENUM
jest ręczne utworzenie kolumny enum w bazie danych (PostgreSQL w twoim przypadku) i radzenie sobie z nią jako kolumna string
w twojej aplikacji Rails. Następnie użyj walidatora validates_inclusion_of, aby wymusić użycie dozwolonych wartości.
validates_inclusion_of :gender, :in => [ "male", "female" ]
I używać ojczystego języka SQL w migracji, aby dodać pola ENUM:
class AddEnumType < ActiveRecord::Migration
def up
execute ".." # your native PostgreSQL queries to add the ENUM field
end
end
zmienił (czerwiec 2014)
Rails 4.1 teraz supports enums. validates_inclusion_of
może być teraz zmieniony na:
enum gender: [ :male, :female ]
(Jest to jednak nadal nie natywnie wspierany przez podstawowej bazy danych, więc rodzimy migracji SQL jest nadal potrzebna.)
Co EXAC tly uniemożliwia dodanie tego wyliczenia w PostgreSQL po migracji i później? – plang