Ruby on rails Rails作用域-未定义的方法
我有一个名为“event”的模型,它有一个名为“coming”的作用域,它返回日期为将来的事件。在rails控制台中,每当我键入Ruby on rails Rails作用域-未定义的方法,ruby-on-rails,scope,Ruby On Rails,Scope,我有一个名为“event”的模型,它有一个名为“coming”的作用域,它返回日期为将来的事件。在rails控制台中,每当我键入 Event.upcoming 它成功返回事件的子集。 但是,如果我键入: @events = Event.all @events.upcoming 我得到一个未定义的方法“即将到来”错误。作用域是否只在类上工作而不在实例化的变量上工作? 提前谢谢。 Yohann一旦调用.all,@events就不再是活动关系,因此不能在其上调用作用域 所以,Event.where
Event.upcoming
它成功返回事件的子集。
但是,如果我键入:
@events = Event.all
@events.upcoming
我得到一个未定义的方法“即将到来”错误。作用域是否只在类上工作而不在实例化的变量上工作?
提前谢谢。
Yohann一旦调用
.all
,@events
就不再是活动关系
,因此不能在其上调用作用域
所以,
Event.where(某些条件).order(排序).uncoming.limit(X)
仍然有效,但是Event.where(某些条件).order(排序).all.uncoming.limit(X)
不起作用。您可以使用作用域
而不是所有
来获取活动的关系对象,该对象将允许您在设置变量后链接变量的作用域:
@events = Event.scoped
@events.upcoming
帮了大忙,thx Beerlington。我不得不给@zsquare打上“正确”的答案,因为他解释了为什么会这样。又来了!杰出的这解决了我的问题,谢谢!也只是为了补充你说的话。任何方法,如Event.find\u all\u xxx()都会破坏ActiveRelation,因此作用域将不起作用