我有一个名为“event”的模型,其中有一个名为“coming”的作用域,它返回将来会发生的事件。在rails控制台中,每当我键入
Event.upcoming
它成功返回事件子集。 但是如果我输入:
@events = Event.all
@events.upcoming
我得到一个未定义的方法'即将发生'错误。范围只适用于类而不是实例化变量吗? 提前致谢。 Yohann
答案 0 :(得分:13)
致电.all
后,@events
不再是ActiveRelation
,因此您无法在其上调用示波器。
因此,Event.where(SOME CONDITIONS).order(ORDERING).upcoming.limit(X)
仍然有效,但Event.where(SOME CONDITIONS).order(ORDERING).all.upcoming.limit(X)
无效。
答案 1 :(得分:11)
您可以使用scoped
代替all
来获取一个活动的关系对象,该对象允许您在变量设置后链接范围:
@events = Event.scoped
@events.upcoming