Подтвердить что ты не робот

Использование области видимости из связанной модели в другой области

У меня есть две связанные модели, такие как:

class PartCategory < ActiveRecord::Base 
  has_many :part_types 
  scope :engine, where(:name => 'Engine') 
end 

class PartType < ActiveRecord::Base 
  belongs_to :part_category 
end 

Я хотел бы добавить область в модель PartType, например:

scope :engine_parts, lambda { joins(:part_category).engine } 

Но когда я это пробую, я получаю следующую ошибку:

NoMethodError: undefined метод `default_scoped? ' для ActiveRecord:: Base: Class

У меня нет большого опыта работы с областью видимости, поэтому мне, вероятно, не хватает чего-то фундаментального здесь. Может кто-нибудь, пожалуйста, скажите мне, что это такое.

4b9b3361

Ответ 1

Попробуйте следующее:

scope :engine_parts, lambda { joins(:part_category).merge(PartCategory.engine) } 

В принципе, результат joins(:part_category) - это объединение двух моделей, поэтому вы не можете напрямую называть его .engine, поэтому вам нужно составить область действия.

Подробнее см. .