Lets discuss on https://github.com/rails/rails/pull/32241
On Wednesday, July 4, 2018 at 11:01:55 PM UTC+2, Alberto Almagro wrote: > > 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>: >> >> 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. >> To post to this group, send email to rubyonra...@googlegroups.com. >> 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 view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-core/afd6e9cb-2fe1-4f6a-b593-f29dbf24ea73%40googlegroups.com.