10

Esta pregunta es sobre el nombre de estilo de relaciones polimórficas.Denominación de relaciones polimórficas bien

Mi base de datos tiene tres tipos de personas: una 'Empresa', un Cliente y un Empleado. Cada uno de los tres está en relaciones polimórficas con tareas y eventos, y proyectos.

De acuerdo con las guías de rieles, esto se haría como (he omitido algunas clases por razones de brevedad):

Person.rb 
has_many :tasks, :as => :taskable 
has_many :events, :as => :eventable 
has_many :projects, :as => :projectable # awkward names 

Task.rb 
belongs_to :taskable, :polymorphic => true 

These lead to the rather strange: 
@person = @task.taskable 

siento que la siguiente sería mucho más gramatical y elegante ... ¿Sería trabajo, y si es así, ¿hay alguna razón por la que las fuentes oficiales usen palabras como projectable en lugar de palabras como owner?

Person.rb 
has_many :tasks, :as => :owner 
has_many :events, :as => :owner 
has_many :projects, :as => :owner 

Task.rb 
belongs_to :owner, :polymorphic => true 

This creates the elegant: 
@person_1 = @task.owner 
@person_2 = @project.owner 
+1

Revisé la guía de Rails sobre asociaciones y dice que: 'belongs_to: taskable,: as =>: polymorphic' está mal y debería ser:' belongs_to: taskable,: polymorphic => true'. – jdoe

+0

@jdoe - He corregido el código para reflejar eso. Gracias por revisar. – sscirrus

Respuesta

4

Personalmente trato de mantenerlo tan genérico como sea posible.

Así que :as => :owner tiene más sentido para mí.

En caso de duda, que acababa de usar

:as => :parent 

que ya he visto en algunos proyectos.

Cuestiones relacionadas