uno múltiple para muchas relaciones con los mismos 2 mesas en Ruby on Rails?
-
20-09-2019 - |
Pregunta
Tengo una base de datos con 2 mesas; Usuarios y revisiones. Las revisiones tienen múltiples relaciones uno-a-muchos a la tabla de usuarios, por ejemplo created_by, verified_by, published_by (siendo cada campo de un identificador de usuario clave externa).
¿Cómo hago para definir esta relación en mis modelos Rails?
Solución
class Revision < ActiveRecord::Base
belongs_to :creator, :foreign_key => "created_by", :class_name => "User"
belongs_to :verifier, :foreign_key => "verified_by", :class_name => "User"
belongs_to :publisher, :foreign_key => "published_by", :class_name => "User"
end
class User < ActiveRecord::Base
has_many :creations, :foreign_key => "created_by", :class_name => "Revision"
has_many :verifications, :foreign_key => "verified_by",
:class_name => "Revision"
has_many :publications, :foreign_key => "published_by",
:class_name => "Revision"
end
El uso de estos modelos:
User.first.creations #=> [#<Revision>, #<Revision>, ...]
Revision.first.creator #=> #<User>
# ...etc., for verifier/verifications and publisher/publications.
Probablemente debería cambiar los nombres de asociación a lo que tiene más sentido en su aplicación.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow