Rails范围 – 未定义的方法

我有一个名为“event”的模型,其中有一个名为“coming”的范围,它返回将来会发生的事件。 在rails控制台中,每当我输入时

Event.upcoming 

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

 @events = Event.all @events.upcoming 

我得到一个未定义的方法’即将发生’错误。 范围只适用于类而不适用于实例化变量吗? 提前致谢。 Yohann

一旦调用.all@events不再是ActiveRelation ,因此你无法调用它的范围。

所以, Event.where(SOME CONDITIONS).order(ORDERING).upcoming.limit(X)仍然可以工作,但是Event.where(SOME CONDITIONS).order(ORDERING).all.upcoming.limit(X)不起作用。

您可以使用scoped而不是all来获取一个活动关系对象,该对象允许您在设置变量后链接范围:

 @events = Event.scoped @events.upcoming