问题标签 [named-scopes]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1057 浏览

ruby-on-rails - 如果凌乱的控制器更快,为什么 Rails 范围更受欢迎?

我一直在尝试使用范围链接 Arel 查询,而不仅仅是使用我在控制器中编写的一些冗长的逻辑。但是范围比获取所有记录然后用一些逻辑筛选它们要慢。那么,我想知道为什么范围更好。

这就是我正在做的事情:

  • 一个问题有很多答案
  • 一个答案属于一个问题
  • 一个问题有一个“question_type”列,我用它来对其进行排序

首先,范围方式...

有问题.rb:

在 questions_controller.rb 中:

然后在视图中,我循环遍历这些实例变量(现在是最多包含 10 个元素的数组)并显示结果。

以下是加载页面所需的时间(五次不同):

在 535 毫秒内完成 200 次 OK(查看次数:189.6 毫秒 | ActiveRecord:46.2 毫秒)

在 573 毫秒内完成 200 次 OK(查看次数:186.0 毫秒 | ActiveRecord:46.3 毫秒)

在 577 毫秒内完成 200 次 OK(查看次数:189.0 毫秒 | ActiveRecord:45.6 毫秒)

在 532 毫秒内完成 200 次 OK(查看次数:182.9 毫秒 | ActiveRecord:46.1 毫秒)

在 577 毫秒内完成 200 次 OK(查看次数:186.7 毫秒 | ActiveRecord:46.9 毫秒)

现在,凌乱的控制器方式......

以下是现在加载页面所需的时间(五次不同):

在 475 毫秒内完成 200 次 OK(查看次数:196.5 毫秒 | ActiveRecord:34.5 毫秒)

在 480 毫秒内完成 200 次 OK(查看次数:200.4 毫秒 | ActiveRecord:36.4 毫秒)

在 434 毫秒内完成 200 次 OK(查看次数:198.2 毫秒 | ActiveRecord:35.8 毫秒)

在 475 毫秒内完成 200 次 OK(查看次数:194.2 毫秒 | ActiveRecord:36.4 毫秒)

在 475 毫秒内完成 200 次 OK(查看次数:195.0 毫秒 | ActiveRecord:35.4 毫秒)

所以...

除了可读性之外,通过范围磨练查询还能获得什么?当有更多记录时,它最终会变得更快吗?

0 投票
1 回答
3197 浏览

ruby-on-rails - Rails 范围与命名范围

scope 和 named_scope 有什么区别吗?

0 投票
1 回答
543 浏览

yii - yii 检测范围是否在使用中

我想知道是否有一种方法可以检测是否在 yii 的 AR 搜索中使用了范围?

例如,一个模型可能包含 2 个作用域:

我这样称呼AR:

这是一个非常动态的站点,有超过 2 个范围,有些使用,有些没有。如果正在使用另一个范围,则有几个范围不应应用。为了避免数百条if else语句,我可以这样做:

0 投票
1 回答
3199 浏览

ruby-on-rails - Rails 3.2:链接 lambda 范围?

在我的 Rails 3.2.8 应用程序中,我有一些命名范围,我想在某些情况下将它们链接在一起。

因此,例如,我有这两个范围:

我单独使用它们,但我也希望能够像这样一起调用它们:

当我尝试它抱怨 in_date_range 不是 Array 的方法时。

但我有另一个范围,

如果我这样做

有用!显然活动范围返回一个关系,而 lambda 范围返回数组,因此不能被链接。

我很想知道为什么更简单的作用域和 lambda 作用域之间的区别,参数如何影响它,以及除了我已经完成的编写组合作用域之外我还能做些什么。

有效,但不是很干燥(因为我也需要单独的范围)或 Rails 风格。在这里和其他地方搜索我已经看到了类似的问题,但似乎没有一个适用于这种情况,我试图用参数链接两个 lambdas。

0 投票
1 回答
748 浏览

ruby-on-rails - 动态访问命名范围

如果我有 3 个命名范围,例如

还有一个功能

其中变量是一个字符串(“test1”,“test2”或“test3”)

如何仅通过知道该变量的值来访问命名范围?

就像是Foo.variable

0 投票
0 回答
43 浏览

ruby-on-rails-3 - Rails:更好地理解动态范围

这是我的“动态”范围:

User上面的方法在我的模型中包含的一个模块中。

因此,您可以在代码中访问它,如下所示:

anonymous scopes在 Google 搜索动态范围时,我在( http://railscasts.com/episodes/112-anonymous-scopes )上遇到了 Ryan Bate 的 RailsCast 。我在使用 Rails 3 后对其进行了修改,但想知道在编写动态范围时我是否走在正确的道路上?

由于我正在编写的一些复杂 API 的性质,我发现自己有时会编写动态范围。

0 投票
1 回答
404 浏览

ruby-on-rails - validate_uniqueness_of 可以与自定义范围一起使用吗?

我正在做一个 RoR 项目,我想对我的一个模型进行唯一性验证,以检查自定义范围:

只是,这行不通。它检查数据库中不存在的活动列并引发此错误:

那么,我的问题是有什么办法可以使这项工作,还是我必须编写一个自定义验证器?如果是这样,是否有关于过度访问数据库应该是什么样子的任何提示?

0 投票
2 回答
3626 浏览

ruby-on-rails - 具有多个参数的 Rails 范围

在我的 offer.rb 模型中,我正在对拥有这些优惠的客户进行一些过滤。但是我希望能够在我的范围内传递另一个参数来搜索,例如,客户的年龄左右。

这就是我现在的报价模型中的内容:

在视图中:

在这个范围内,我怎样才能通过客户的年龄?

谢谢!

0 投票
0 回答
81 浏览

ruby - 在范围内的多个列上思考 Sphinx OR

我需要一种调节范围的方法,以便它检查值是否存在于三列之一中。这不是我的代码,我刚刚被告知要编辑它,所以很难理解。

所以,我在 MYSQL 中的条件是:

我尝试了以下方法:

但这不起作用。

0 投票
1 回答
116 浏览

ruby-on-rails - Rails:has_many 关联的范围

我有 2 个模型 Person 和 PersonInterest : People 包含有关一个人的所有信息 Person Interests 存储一个人的兴趣(person_id,interest_id)

人 has_many PersonInterests

我将如何创建一个可以搜索所有具有相同interest_id 的人的范围