Définition d'un: has_many: par l'association sur une association belongs_to Ruby on Rails
-
27-09-2019 - |
Question
J'ai trois modèles, chacun ayant les associations suivantes:
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
Comme vous pouvez le voir dans le texte commenté, je l'ai mentionné ce que je dois.
La solution
Vous venez de créer la méthode pour y accéder
class Model2 < ActiveRecord::Base
belongs_to :model1
def model3s
model1.model3s
end
end
Ou, vous pouvez déléguer à Model1 la méthode model3s
class Model2 < ActiveRecord::Base
belongs_to :model1
delegate :model3s, :to => :model1
end
Autres conseils
Pourquoi ne pas essayer:
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
Cela aura enregistrement actif et rejoindre model2 Model3 par model1_id laissant modèle1 complètement hors de celui-ci et devrait être plus efficace.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow