I am implementing multiple select elements in my view and wanted to use enum method to have a clean implementation and control over values for select tag. Then, I started writing this in my model.
FONTS = {
“Arial”: 0,
“Courier New”: 1,
“Garamond”: 2,
“Georgia”: 3,
“Helvetica”: 4,
“Impact”: 5,
“Lucida Console”: 6,
“Lucida Grande”: 7,
“Monaco”: 8,
“Palatino”: 9,
“Times New Roman”: 10,
“Trebuchet MS”: 11
}
enum header_font: FONTS
enum text_font: FONTS
``
Soon after I got the error “but this will generate a instance method “Arial?”, which is already defined by another enum.”
I understand the conflict here but I think enum implementation is really neat feature in Rails and should be used more often. ( am i wrong? )
In this scenario, I was never going to use Model.arial? method. The only reason for using enums here was to use, for example these methods;
Model.header_fonts Model.text_fonts validates_inclusion_of :header_fonts, in: Model.header_fonts.keys
``
Do you think that there should be an option to initialize an enum without helpers ?
Something like
enum header_font: FONTS, helpers: false
``
Or should I just use constants instead?