L'impostazione di una: has_many: attraverso l'associazione in un'associazione belongs_to Ruby on Rails
-
27-09-2019 - |
Domanda
Ho tre modelli, ciascuno con le seguenti associazioni:
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
Come si può vedere nel testo commentato, ho detto quello che mi serve.
Soluzione
È sufficiente creare il metodo per accedervi
class Model2 < ActiveRecord::Base
belongs_to :model1
def model3s
model1.model3s
end
end
In alternativa, è possibile delegare model1 il metodo model3s
class Model2 < ActiveRecord::Base
belongs_to :model1
delegate :model3s, :to => :model1
end
Altri suggerimenti
Perché non provare:
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
Questo avrà record attivo unirsi model2 e model3 da model1_id lasciando model1 completamente fuori di esso e dovrebbe essere più efficiente.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow