Thanks Kasper for your reply! I'm really happy to see that you're +1 on this.
I would like to start implementing it on the weekend, it would be great if someone else shares her/his thoughts about it before. El jueves, 21 de junio de 2018, 9:15:50 (UTC+2), Kasper Timm Hansen escribió: > > 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 <alberto...@gmail.com > <javascript:>>: > > 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-co...@googlegroups.com <javascript:>. > To post to this group, send email to rubyonra...@googlegroups.com > <javascript:>. > Visit this group at https://groups.google.com/group/rubyonrails-core. > For more options, visit 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.