Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails作用域-未定义的方法_Ruby On Rails_Scope - Fatal编程技术网

Ruby on rails 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”的模型,它有一个名为“coming”的作用域,它返回日期为将来的事件。在rails控制台中,每当我键入

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,因此作用域将不起作用