Rails 作用域 - 未定义的方法



我有一个名为"event"的模型,它的作用域名为"即将到来的",它返回将来发生的事件。在 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)行不通。

您可以使用

scoped而不是all来获取活动关系对象,该对象允许您在设置变量后链接变量上的范围:

@events = Event.scoped
@events.upcoming

最新更新