Область применения Rails - неопределенные методы

У меня есть модель под названием «событие» у которого есть область с именем "предстоящий" который возвращает события, которые датируются в будущем. В консоли рельсов, когда я печатаю

<code>Event.upcoming
</code>

Он возвращает подмножество событий успешно. Однако, если я наберу:

<code>@events = Event.all
@events.upcoming
</code>

Я получаю неопределенный метод "предстоящий" ошибка. Работают ли области видимости только с классом, а не с экземплярами, для которых создаются экземпляры? Заранее спасибо. Yohann

Ответы на вопрос(2)

Ты можешь использоватьscoped вместоall чтобы получить объект активного отношения, который позволит вам связать области видимости переменной после того, как она была установлена:

@events = Event.scoped
@events.upcoming
 Yohann T.02 мая 2012 г., 15:01
отличная помощь, спасибо Берлингтон. Я должен был дать «правильный» Ответьте на @zsquare, потому что у него есть объяснение, почему это происходит. Спасибо еще раз!
Решение Вопроса

.all, @events больше неActiveRelationследовательно, вы не можете назвать область действия.

Так,Event.where(SOME CONDITIONS).order(ORDERING).upcoming.limit(X) все равно будет работать, ноEvent.where(SOME CONDITIONS).order(ORDERING).all.upcoming.limit(X) не будет работать.

 Yohann T.02 мая 2012 г., 15:01
отлично! Это решило мои проблемы, спасибо! Также просто добавить к тому, что вы сказали. любые методы, такие как Event.find_all_xxx (), нарушают ActiveRelation, поэтому область действия не будет работать

Ваш ответ на вопрос