I’m +1 as I’ve wanted this in the past. I think enum actually did support this but it was never documented (e.g. private API).
But I remember something about others having objections to supporting string columns. Perhaps Rafael or Sean? > Den 20. jun. 2018 kl. 22.08 skrev Alberto Almagro <albertoalma...@gmail.com>: > > Hello again Rails community! > > first of all thanks for your time reading this. I apologize in case this > appeared before, I swear I have tried a lot of combinations in the search > above, found nothing. > > Currently Enum > <http://api.rubyonrails.org/v5.2/classes/ActiveRecord/Enum.html> allows us to > map the values to integers in the database. The typical use case would be > something like: > > class CreateOrders < ActiveRecord::Migration[5.2] > def change > create_table :orders do |t| > t.integer :status > end > end > end > > > class Order < ApplicationRecord > enum status: [:ok, :billing, :failed] > end > > > > This would map the following: > Order.statuses[:ok] # => 0 > Order.statuses[:billing] # => 1 > Order.statuses[:failed] # => 2 > > > The problem with integers is that they don't read well in the database. > Seeing status = 0 isn't meaningful, so at the end lots of teams, including > us, end having a string in the database and mapping enums with a hash. > > > class CreateOrders < ActiveRecord::Migration[5.2] > def change > create_table :orders do |t| > t.string :status > end > end > end > > > class Order < ApplicationRecord > enum status: { ok: 'ok', billing: 'billing', failed: 'failed' } > end > > Writing this really feels to us like unnecessary boilerplate. I would like to > write a PR to allow having a string in the database and declaring the enum > with an array of symbols. > > class CreateOrders < ActiveRecord::Migration[5.2] > def change > create_table :orders do |t| > t.string :status > end > end > end > > > class Order < ApplicationRecord > enum status: [:ok, :billing, :failed] > end > > I think this would feel much better, cleaner. Of course I will keep current > options and syntax. Do you like it? > > -- > You received this message because you are subscribed to the Google Groups > "Ruby on Rails: Core" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to rubyonrails-core+unsubscr...@googlegroups.com > <mailto:rubyonrails-core+unsubscr...@googlegroups.com>. > To post to this group, send email to rubyonrails-core@googlegroups.com > <mailto:rubyonrails-core@googlegroups.com>. > Visit this group at https://groups.google.com/group/rubyonrails-core > <https://groups.google.com/group/rubyonrails-core>. > For more options, visit https://groups.google.com/d/optout > <https://groups.google.com/d/optout>. -- Kasper -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Core" group. To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-core+unsubscr...@googlegroups.com. To post to this group, send email to rubyonrails-core@googlegroups.com. Visit this group at https://groups.google.com/group/rubyonrails-core. For more options, visit https://groups.google.com/d/optout.