我有一个名为“事件”的模型,该模型具有一个名为“即将到来”的范围,该函数将返回将来已过时的事件。在rails控制台中,每当我键入

Event.upcoming


它成功返回事件的子集。
但是,如果我键入:

@events = Event.all
@events.upcoming


我收到未定义的方法“即将到来”错误。范围仅适用于类而不适用于实例化变量吗?
提前致谢。
约汉

最佳答案

调用.all后,@events不再是ActiveRelation,因此无法在其上调用作用域。

因此,Event.where(SOME CONDITIONS).order(ORDERING).upcoming.limit(X)仍将起作用,但Event.where(SOME CONDITIONS).order(ORDERING).all.upcoming.limit(X)将不起作用。

09-12 04:09