我有一个名为“事件”的模型,它的范围名为“即将到来”,它返回未来日期的事件。在 Rails 控制台中,每当我输入
Event.upcoming
它成功返回事件的子集。但是,如果我输入:
@events = Event.all
@events.upcoming
我收到一个未定义的方法“即将到来”错误。范围是否仅适用于类而不适用于实例化变量?提前致谢。约汉
我有一个名为“事件”的模型,它的范围名为“即将到来”,它返回未来日期的事件。在 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