Установка A: HAS_MANY: через ассоциацию на принадлежащей ассоциации ruby на рельсах
-
27-09-2019 - |
Вопрос
У меня есть три модели, каждый из которых имеет следующие ассоциации:
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
Как вы можете видеть в прокомментированном тексте, я упомянул то, что мне нужно.
Решение
Вы просто создаете метод для доступа к нему
class Model2 < ActiveRecord::Base
belongs_to :model1
def model3s
model1.model3s
end
end
Или вы можете делегировать для Model1 метод Model3S
class Model2 < ActiveRecord::Base
belongs_to :model1
delegate :model3s, :to => :model1
end
Другие советы
Почему бы не попробовать:
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
Это будет иметь активную запись Model2 и Model3 Model1_D_ID, выходя из модели1, полностью из них, и должна быть более эффективной.
Не связан с StackOverflow