El establecimiento de un: has_many: a través de la asociación en una asociación belongs_to Ruby on Rails
-
27-09-2019 - |
Pregunta
tengo tres modelos, cada uno con las siguientes asociaciones:
class Model1 < ActiveRecord::Base
has_many :model2s
has_many :model3s
end
class Model2 < ActiveRecord::Base
belongs_to :model1
has_many :model3s, :through => :model1 # will this work? is there any way around this?
end
class Model3 < ActiveRecord::Base
belongs_to :model1
has_many :model2s, :through => :model1 # will this work? is there any way around this?
end
Como se puede ver en el texto comentado, he mencionado lo que necesito.
Solución
Usted acaba de crear el método para acceder a ella
class Model2 < ActiveRecord::Base
belongs_to :model1
def model3s
model1.model3s
end
end
O bien, puede delegar en Model1 el método model3s
class Model2 < ActiveRecord::Base
belongs_to :model1
delegate :model3s, :to => :model1
end
Otros consejos
Por qué no pruebas:
class Model1 < ActiveRecord::Base
has_many :model2s
has_many :model3s
end
class Model2 < ActiveRecord::Base
belongs_to :model1
has_many :model3s, :primary_key => :model1_id,
:foreign_key => :model1_id
end
class Model3 < ActiveRecord::Base
belongs_to :model1
has_many :model2s, :primary_key => :model1_id,
:foreign_key => :model1_id
end
Esto tendrá registro activo se unen a model2 y MODEL3 por model1_id dejando model1 completamente fuera de ella y debe ser más eficiente.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow