问题标签 [default-scope]

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 投票
1 回答
979 浏览

ruby-on-rails - Rails 默认范围排序

我正在尝试将默认范围添加到我需要它的模型中,以首先按一个属性对 asc 进行排序,然后按另一个模型上的委托属性对升序进行排序。

到目前为止我有这个:

我不断收到一条错误消息,指出 park_name 不存在(这是真的,因为它不在该模型上),但它已被委托。

有想法该怎么解决这个吗?

0 投票
1 回答
113 浏览

ruby-on-rails - Rails 加入重复 default_scope

我正在尝试将 Rails 4.0.2 default_scope 与连接一起使用,但是当我调用时Unit.with_active_properties为什么会得到以下重复的 SQL?

0 投票
2 回答
1704 浏览

ruby-on-rails-4 - 为什么这些嵌套的无范围块在 Rails 3 中工作时不能在 Rails 4 中删除 default_scope?

我的问题

似乎 Rails 4 忽略了嵌套的无范围块(而在 Rails 3 中它们没问题)。我一直在疯狂地谷歌搜索,在这里找不到任何表明变化的东西。有什么想法可以让我在 Rails 4 中使用它吗?

我在做什么

我将 default_scope 用于多租户,如#388 Multitenancy with Scopes所示。一些管理员将是多个租户的管理员,我想在报告中向他们显示汇总数据。我通过使用unscoped blocks来做到这一点。我还预加载了关联对象,因为 1)它更高效 2)我需要将所有关联对象放在一个地方,这样我就不必在我的视图中继续使用无范围的块。为了预加载关联的对象,我使用了嵌套的无范围块。

我在 Rails 3.2.17 上的应用程序中有这个工作,但现在我已经升级到 Rails 4.0.1.rc1,它不再工作。

一个简单的例子来说明差异

下面,我将展示我在控制台中得到的内容。这个例子比我实际想要做的要简单得多,但我认为这是展示正在发生的事情的最简单方法。

因此,我正在加载提交并预加载其关联的清单。然后我可以确认提交及其相关的清单都可用。

如果我切换到我的 Rails 4 环境(都在同一个数据库上工作),这就是我看到的:

我正在运行完全相同的代码,但只有提交可用 - 其关联的清单为零。

FWIW,如果我在控制台中运行它,我可以在 Rails 3.2.17 中复制它。注意:这里的区别是我只使用了 Submission.unscoped {} 块,而不是嵌套 Checklist.unscoped {} 块。

更新

我深入研究了 Rails 源代码,我可以看到 3.2-stable 中的“unscoped”方法与当前 master 相同,但该方法调用“relation.scoping”,并且该方法在两个分支之间有很大不同。我不确定是否引入了错误,或者预期的行为是否发生了变化。

以供参考:

当前主人

关系范围

当前范围

3.2-稳定

关系范围

链接到with_scope方法...

0 投票
1 回答
41 浏览

ruby-on-rails - Rails 应用程序尝试设置模型的 default_scope

在此应用程序中,模型 Resource_Estimations 由公司完成。我希望对公司名称的 Resource_Estimations 有一个默认排序顺序。

公司模式

资源_估计模型

Resource_Estimation 模型中的最后一条语句(default_scope)是我想要改变的。我希望排序顺序是 company.name,而不是 company_id 的当前排序顺序。已经尝试了很多东西,但到目前为止没有运气。欢迎任何建议 - 谢谢皮埃尔

0 投票
1 回答
938 浏览

ruby-on-rails - Rails 4 - acts_as_votable, change default sort order

I have a Rails app that allows voting on some models. In one of my models I want to change the default_scope so that objects that has the most votes is displayed first. I have tried the following in my model file:

This gives me the following error:

I wonder if there is a way the change the default default sort order, what I'm doing is obviously not working.

Solutions for making it work in the controller level (not default order) would also be nice, if that's possible.

0 投票
5 回答
37939 浏览

ruby-on-rails - 为什么经常不推荐使用rails default_scope?

互联网上 到处都有人提到使用 rails是个坏主意,而 stackoverflow 上default_scope热门default_scope话题是关于如何覆盖它。这感觉一团糟,值得提出一个明确的问题(我认为)。

那么:为什么不default_scope推荐使用 rails 呢?

0 投票
1 回答
558 浏览

ruby-on-rails - Rails 3.0 - 带有 Proc 的 default_scope 不起作用

我有一个在 Rails 3.0 上编写的大项目。

该项目的最大模型是Questinary。它继承自 ActiveRecord::Base 作为所有典型模型。该模型的许多部分被提取到从 Questionary 继承的单独模型中。

我对此类模型中的范围有疑问。问题是 ActiveRecord 不了解范围,然后他们使用 Procs。带有 Procs 的范围进入 Questinary 模型本身可以正常工作。一切都很好,然后范围不包含 Proc。

错误信息是undefined method 'includes_values' for #<Proc:0x000000081cde98>

回溯:

如您所见,从 ActiveAdmin 调用 ActiveRecord,因此问题可能与此有关。

我知道旧的 gem 版本不好,但我不能更新它们,因为它会破坏应用程序。

大约一年前,这些东西运行良好,但后来服务器被拆解了。现在我需要重新激活它。

更新

范围示例:

0 投票
1 回答
339 浏览

sql - 强制在 Rails 的 ActiveRecord 模型中的位置

有什么方法可以强制在我使用 Active Record 执行的每个 SELECT 语句中包含 where 语句?我正在使用 Rails 4。

例如:如果我打电话:

然后我希望 Rails 生成如下 SQL 查询:

whereproducts.client_id = 1是强制的 where 语句。我通过 where 或其他 ORM 方法(如或其他)定义的所有其他条件find也应包含在语句中。

是否有可能定义这种强制条件

0 投票
1 回答
75 浏览

ruby-on-rails-4 - default_scope 不适用于关联模型的范围

我有如下模型设置:

default_scope 返回没有 background_job 的主题

这是主题模型:

但是当我做 subject.sub_subjects.ordered 时,我收到以下错误:

当我调用 subject.subjects (没有订购)时,它就可以正常工作

我还尝试使用主题自己的属性设置 default_scope,它也可以正常工作

我无法弄清楚是什么问题,请帮助

编辑:

当我执行 SubSubject.joins{subject}.order('subjects.order_number') 时,rails 执行的 SQL 查询是:

0 投票
1 回答
1286 浏览

ruby-on-rails - 按姓氏排序

我正在尝试为我的用户模型设置默认范围。每个用户都有一个名称列。问题是我想按用户姓氏的第一个字母排序。这将是名称中最后一个单词的开头。例如,用户名可能是“Kevin John Smith”,我想按 Smith 订购。我目前有default_scope order('name ASC'),但这是按名字的第一个字母排序的。我如何将其转换为按姓氏的第一个字母排序?谢谢!