У меня есть 4 модели: Artists, Editions, Events & EventItems
.Проблемы с цепями в Rails с контекстом
- Editions имеет много событий
- Событий имеет много художников через EventItems
- Editions имеет много Artists через Событие
На художниках у меня есть область применения published
Я деятельный как художников, которые находятся на событии, которое имеет состояние, которое НЕ draft
.
scope :published, -> { joins(:events).where("events.state != ?", 'draft').uniq }
Это работает отлично, пока я не начать их цепочки и хотят художников, по крайней мере, на событие, которое published
для данного издания.
Edition.first.artists.published
Это работает, за исключением, что он будет также присоединяется events
вне текущей редакции и ошибочно публикует художник, если у них есть какое-либо событие, опубликованное (даже если они не являются в данном издании).
Чтобы заставить его работать правильно, я должен был взломать это как так (это ужасно):
scope :published, ->(edition = nil) {
if edition.present?
joins(:events).where("events.state != ? AND events.edition_id = ?", 'draft', edition.id).uniq
else
joins(:events).where("events.state != ?", 'draft').uniq
end
}
Edition.first.artists.published(Edition.first)
Есть в любом случае, чтобы дать больше контекста сферы включать только те события, в этом издании? Значит, это будет правильно?
Спасибо!