Yoh*_* T. 2 scope ruby-on-rails
我有一个名为"event"的模型,其中有一个名为"coming"的范围,它将返回未来日期的事件.在rails控制台中,每当我键入
Event.upcoming
Run Code Online (Sandbox Code Playgroud)
它成功返回事件子集.但是,如果我输入:
@events = Event.all
@events.upcoming
Run Code Online (Sandbox Code Playgroud)
我得到一个未定义的方法'即将发生'错误.范围只适用于类而不是实例化变量吗?提前致谢.Yohann
zsq*_*are 13
一旦你打电话.all,@events不再是一个ActiveRelation,因此你不能在它上面调用范围.
所以,Event.where(SOME CONDITIONS).order(ORDERING).upcoming.limit(X)仍然有效,但Event.where(SOME CONDITIONS).order(ORDERING).all.upcoming.limit(X)不会奏效.
Pet*_*own 11
您可以使用scoped而不是all获取一个活动关系对象,该对象允许您在设置变量后链接范围:
@events = Event.scoped
@events.upcoming
Run Code Online (Sandbox Code Playgroud)