эти две области применения не кажутся цепнойChaining прицелы с соединениями
scope :approved, ->{ with_stage(:approved)}
который в SQL является
WHERE (pages.stage & 4 <> 0)
и
scope :with_galleries, ->{ joins("LEFT OUTER JOIN galleries ON galleries.galleriable_type = 'Brand' AND galleries.galleriable_id = page.brand_id").where("galleries.id is NOT NULL") }
этот охват должен давать только страницы которые имеют галереи (каждая страница имеет один бренд, и каждая марка может иметь много галерей)
если я ЦЕПЬ: with_galleries
, кажется, что все остальные условия на pages
таблице теряется
Я делаю joins
неправильно?
спасибо! где я могу прочитать о синтаксисе объединений (бренд:: galleries)? –
Ха! На самом деле синтаксис, который я написал выше, выглядит забавным для меня, поскольку я больше привык к эквивалентному, но более раннему хэш-ракетному стилю: 'joins (: brand =>: galleries)'. Вы можете прочитать об этом в [Руководстве по интерфейсу запроса активной записи] (http://guides.rubyonrails.org/active_record_querying.html). Найдите «Присоединение вложенных ассоциаций». –