Jerarquía de usuario (modelo), unión autorreferencial
-
06-07-2019 - |
Pregunta
Estoy tratando de descubrir cómo tener una relación de usuario de dos niveles.
Los fotógrafos tienen clientes. Los clientes tienen un fotógrafo. Ambos son usuarios.
Tengo un modelo de usuario que se ve así:
class User < ActiveRecord::Base
#authlogic
has_many :client_associations,
:foreign_key => 'client_id',
:class_name => 'Association',
:dependent => :destroy
has_many :clients, :through => :client_associations
has_one :photographer_association,
:foreign_key => 'photographer_id',
:class_name => 'Association',
:dependent => :destroy
has_one :photographer, :through => :photographer_association
end
Y un modelo de Asociación que se ve así:
create_table "associations", :id => false, :force => true do |t|
t.integer "photographer_id"
t.integer "client_id"
end
class Association < ActiveRecord::Base
belongs_to :client, :class_name => 'User'
belongs_to :photographer, :class_name => 'User'
end
Cuando lo lleno con algunos datos y enciendo la consola, ejecutar user.clients.all o user.photographer solo me da una matriz vacía.
¿Qué estoy haciendo mal?
Solución
Debe cambiar las teclas_extranjeras:
has_many :client_associations,
:foreign_key => 'photographer_id',
:class_name => 'Association',
:dependent => :destroy
has_many :clients, :through => :client_associations
has_one :photographer_association,
:foreign_key => 'client_id',
:class_name => 'Association',
:dependent => :destroy
has_one :photographer, :through => :photographer_association
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow