Использование области из связанной модели в другой области - PullRequest
27 голосов
/ 19 февраля 2012

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

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: неопределенный метод `default_scoped? 'для ActiveRecord :: Base: Class

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

1 Ответ

46 голосов
/ 19 февраля 2012

Попробуйте это:

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

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

Смотрите Здесь больше

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...