Configuração A: Has_Many: Através da associação em uma associação pertencente Ruby on Rails
-
27-09-2019 - |
Pergunta
Eu tenho três modelos, cada um com as seguintes associações:
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 você pode ver no texto comentado, mencionei o que preciso.
Solução
Você apenas cria o método para acessá -lo
class Model2 < ActiveRecord::Base
belongs_to :model1
def model3s
model1.model3s
end
end
Ou, você pode delegar ao Model1 o método Model3s
class Model2 < ActiveRecord::Base
belongs_to :model1
delegate :model3s, :to => :model1
end
Outras dicas
Por que nao tentar:
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
Isso terá o Model2 e o Model2 e o Model3 e o Model1_ID de saída do Model1_ID, o Model1 e deve ser mais eficiente.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow