问题标签 [named-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 回答
554 浏览

ruby-on-rails - will paginate miscounting oddness with named scopes

I recently broke up my query into 4 named scopes to make it easier to re-sort and will paginate which otherwise always worked fine now has problems calculating the number of pages.

Used like so with paginate thrown on the end...

Paginate will for example show that there are 6 pages of 15 each but when you get to page 4, pages 5-6 disappear... and if you try jumping to 5 or 6 directly they don't exist.

Looking at it, I realized to problem will paginate is having is that

however

The sql getting generated for the former is about 8 lines shorter than that of the latter and neglects my sql HAVING clause which causes it to return more results...

Any ideas on how to fix this?

0 投票
2 回答
704 浏览

ruby-on-rails - 如何使 named_scope 与连接表一起正常工作?

这是我的情况。我有两个表:承诺和承诺交易。当用户进行质押时,他在质押表中只有一行。

稍后当需要履行承诺时,每笔付款都会记录在我的承诺交易表中。

我需要能够查询所有未完成的质押,这意味着交易表中的金额总和小于质押金额。

这是我到目前为止所拥有的:

您可能会问自己,为什么我指定了那个多余和荒谬的条件选项。答案是,当我不强制 ActiveRecord 确认条件中的质押交易表时,它会完全省略它,这意味着我的 having 子句变得毫无意义。

我的信念是我遇到了 ActiveRecord 的缺点。

最终我需要能够做到以下几点:

  • 质押公开
  • Pledge.open.count
  • Pledge.open.find(:all, ...)
  • 等等

有人对这个问题有更优雅的答案吗?请不要建议每次交易发生时增加一个承诺 amount_given 字段。这感觉像是一种创可贴的方法,我更喜欢在创建承诺后保持静止并计算差异。

如果我在这里不使用 Rails,我只需创建一个视图并完成它。

谢谢!

0 投票
1 回答
910 浏览

activerecord - has_many 和 sum named_scope

我有这种情况:

我需要一个命名范围来查找所有任务剩余时间超过 0 小时的故事

基于这篇文章。我写了这个:

Story.uncompleted返回一个空数组。

你能帮助我吗?

0 投票
1 回答
893 浏览

mysql - Rails:链接范围时可以合并连接吗?

在类 AI 中有两个作用域,s1 和 s2,它们都使用完全相同的连接列连接表 T:

现在,这样做失败了:

错误:

ActiveRecord::StatementInvalid: Mysql::Error: Not unique table/alias: 'T'

我有点期望 Rails 对那些相同的连接很聪明,并且只需应用一次连接,但事实并非如此。我可以使用表别名,但是我仍然会毫无理由地拥有两个相同的连接。

我确定必须有一个适当的解决方案?

0 投票
3 回答
7421 浏览

ruby-on-rails - 将可用语言与语言名称匹配

我想在站点用户编辑/创建页面中进行语言选择下拉菜单。

为此,我当然已将网站翻译成不止一种语言。使用 I18n.available_languages,我可以得到一组语言环境代码,就像这样

此外,我创建了一个语言模型并将其与用户相关联:

然后,语言表包含本地语言的语言环境代码和语言名称,如下所示:

然后,我在用户新建、创建和编辑操作中有以下分配:

我在视图中使用它('available_languages' 是一个局部变量,因为来自控制器的@available_languages 已被传递给部分):

所有这一切的结果是,用户将获得一个语言环境选择下拉菜单来定义给定用户的语言环境。

我的问题是:有没有一种干净的方法可以将 @available_languages 分配从 UsersController 移出并进入 Language 模型,所以我可以缩短这个:

像这样:

0 投票
2 回答
54 浏览

sql - 带范围的默认模型输出的基本修改

我发现自己一遍又一遍地做同样的事情,只是为了对标准模型输出做一个小的修改。我有一系列表格,用于存储有关产品等的信息以及所有这些信息的商店价格。价格以美元存储,但输出取决于用户想要的货币,该货币存储在他们的会话中。

例子:

是否有一种简单可靠的方法来修改输出,以便在我调用时:

我可以附上类似的东西

或者

并简单地将价格列中的所有项目相乘?named_scope 可以这样做吗?

0 投票
3 回答
2125 浏览

sql - rails 命名范围问题

我有两个命名范围......它们都单独工作,但组合时不起作用。

例子:

总命名范围有效,但货币无效......

名为范围的货币有效,但总数无效...

有任何想法吗?

0 投票
1 回答
1967 浏览

ruby-on-rails - ActiveRecord named_scope, .scopes

这个问题的背景非常复杂和令人费解,当我正在寻找一个简单的答案时,我将在解释我的问题时将其搁置一边,而是提供这种假设情况。

如果我有一个名为汽车的简单 ActiveRecord 模型,named_scopes 如下所示:

如果我打电话的话,忽略范围本身:

这究竟会返回什么?我在控制台中看到的是:

在我看来,这似乎是一个键/值数组,键是命名范围的符号,值是指向 ActiveRecord 中的 named_scope.rb 文件的 Proc。

如果我希望将散列或 Proc 作为实际命名范围给出(对于 :classic 而言,我会收到“:conditions => { :build_date <= 1969 }”,我该如何找到它呢?

我正在编写一个有条件地合并一些named_scopes的插件,并且在这方面我遇到了一些阻力。我目前正在使用以下内容来合并这些范围:

忽略我在这里所做的事情的“正确性”,有没有更好的方法可以检索给 named_scope 的实际 Hash 或 Proc?我不喜欢在这个函数中使用“eval”,如果我真的可以检索 Hash 或 Proc,那么我将能够引入一些更强大的合并逻辑。对此的任何想法将不胜感激。谢谢。

0 投票
1 回答
243 浏览

ruby-on-rails - 如何测试 named_scopes 和搜索方法?

当我了解 proxy_options 时,我开始使用它来测试我所有的命名范围。但后来我发现自己只是直接从模型中复制条件哈希,所以它并没有真正测试结果的正确性:

另一种方法是提出正面和负面的例子,看看它们是否包含在结果中:

但这并不能很好地检查边界,当事情变得更加复杂时,您将拥有一长串断言包含?提出一组预期的结果似乎会更好,然后检查以确保它匹配:

但是,如果返回的结果与您提供的顺序不同,则测试可能会失败。我想你可以在你的模型中实现 <=> ,这样你就可以对两个数组进行排序。但似乎这真的不是必需的。有没有更好的方法来测试这些搜索方法?或者至少是普遍接受的正确方式?

0 投票
1 回答
226 浏览

ruby-on-rails - 如何重用命名范围?

named_scope,我的User模型中有一个如下。

我想创建其他两个命名范围,它们重新使用这个范围,例如,

知道该怎么做吗?