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.

Reply via email to