On May 8, 2014, at 12:25 PM, Tomas Varneckas <[email protected]> wrote:

> Hi,
> 
> We have a project at my workplace which heavily relies on a custom in-house 
> extension to ActiveRecord which does this
> (but ofcourse in an uglier way). It'd be great if this was a builtin feature.
> 
> Hardcoding class names in table rows makes for tedious migrations whenever 
> classes are renamed.
> 

I’m not sure that a call to `update_all` really counts as “tedious”:

StiBaseClass.where(type: ‘OldType’).update_all(type: ‘NewType’)

The biggest issue I see with using enums for this is that the possible values 
of an enum need to be listed *someplace* - reflecting on all the subclasses of 
StiBaseClass won’t work since the order isn’t stable under renaming.

This applies doubly to using enums in polymorphic association _type fields…

—Matt Jones

> 
> On Thu, May 8, 2014 at 6:00 PM, Zac Moody <[email protected]> wrote:
> Hi all,
> 
> I was thinking that someone might want the type column used with Single-Table 
> Inheritance to be an Enum rather than a string.  Is the counter argument that 
> STI is responsible for the type column so it doesn't matter?
> 
> If the inheritance_column did support enum, would the resulting code be 
> repeating itself too much?  
> 
> class User < ActiveRecord::Base
>   enum type: [:student, :teacher]
> end
> 
> class Teacher < User
> end
> class Student < User
> end
> 
> If there's interest in this feature I would be happy to work on adding it.
> 
> Zac
> 
> -- 
> 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 [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/rubyonrails-core.
> For more options, visit https://groups.google.com/d/optout.
> 
> 
> -- 
> 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 [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/rubyonrails-core.
> For more options, visit https://groups.google.com/d/optout.

Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail

Reply via email to