2015-04-04 16 views
12

sto applicando enum il seguente attributo: transparencycondividere i valori di dichiarazione enum tra i modelli

lo stesso attributo (con enum) viene utilizzato in due diversi modelli: Category e Post

è possibile condividere i valori enum tra i modelli, al fine di evitare la duplicazione del codice:

enum transparency: %w(anonymous private public) 

risposta

15

È possibile utilizzare un concern.

module HasTransparency 
    extend ActiveSupport::Concern 
    included do 
    enum transparency: %w(anonymous private public) 
    end 
end 

Poi si inserisce nei propri modelli:

class Category < ActiveRecord::Base 
    include HasTransparency 

    .... 
end 
+0

Quasi corretto, con un piccolo errore! Il tuo esempio restituirà un array di stringhe, non una serie di simboli. % w deve essere cambiato in% i. – msdundar

1

Un'alternativa a "il modo giusto" di usare una preoccupazione o un modulo, si può solo fare riferimento a un altro enum class. Ha funzionato perfettamente per me:

enum same_values_than_other: SomeOtherClass.my_awesome_enum 
Problemi correlati