我有一个名为“事件”的模式,有一个名为了在未来日“即将到来的”至极的回报活动范围。 在轨道控制台,每当我型
Event.upcoming
它成功返回事件的子集。 但是,如果我输入:
@events = Event.all
@events.upcoming
我得到一个未定义的方法“即将到来”的错误。 正在作用域的工作的类,而不是实例变量? 提前致谢。 Yohann
我有一个名为“事件”的模式,有一个名为了在未来日“即将到来的”至极的回报活动范围。 在轨道控制台,每当我型
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