问题标签 [arel]

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 回答
2902 浏览

ruby-on-rails-3 - ActiveRecord::Relation 加入的条件不仅仅是外键

有没有办法使用 ActiveRecord::Relation 为左外连接指定多个条件?

以下面的 SQL 语句为例。谁能用 ActiveRecord::Relation 对象重写它?

在 ActiveRecord 3.0.3+ 下有没有办法做到这一点?

提前致谢。

0 投票
2 回答
1825 浏览

ruby-on-rails-3 - Rails 3,RSpec 2.5:使用带有命名范围的 should_receive 或 stub_chain

我使用 Rails 3.0.4 和 RSpec 2.5。在我的控制器中,我大量使用命名范围,例如

在我的测试中,我希望能够模拟这样一个查询的结果,而不是措辞。我认为做类似的事情没有意义

因为当我决定重新排序命名范围时,此测试将失败。

使用 Rails 2.3 和 RSpec 1.x,这工作得很好:我可以写

并且上述调用将被捕获并正确处理。然而,在 Rails 3 中,由于某种原因,这不再起作用。

为什么?如何对嵌套范围的结果设置期望值或存根?由于 Rails 3 的 ActiveModel 中的所有内容都是一个命名范围(感谢 ARel),因此这必须以某种方式实现,否则测试确实会非常脆弱。

谢谢!

更新:另见GitHub 上的问题报告

0 投票
2 回答
6332 浏览

ruby-on-rails-3 - Rails3 和 ActiveRecord::Relation - Arel 和 OR

我在一个名为 Events 的模型中定义了一些范围。现在我需要使用 OR 运算符加入他们。我正在使用 Rails3,我对 ActiveRelation & Arel 以及我应该如何以及如何使用它有点困惑

我如何获得事件

当我尝试时Events.for_company(X).or(issues)出现错误

NoMethodError:#ActiveRecord::Relation 的未定义方法“或”

使用Events.for_company(Company.find(1)).arel.or(Events.issues)我得到

NoMethodError:#Arel::SelectManager 的未定义方法“或”

我想获取所有问题或用户来自确定公司的事件。

谢谢。

0 投票
6 回答
4898 浏览

sql - 有没有办法反转 ActiveRecord::Relation 查询?

假设我们有以下内容:

我们能以某种方式得到一个倒置的 SQL 查询吗?

我在找什么,应该是这样的:

0 投票
1 回答
3412 浏览

ruby-on-rails-3 - User.where(:id => [1,2]).where(:id => 2).arel.to_sql unexpected result

From rails console, running the following gives an unexpected result:

I'm not expecting that to be an OR.

This example is a very simplified example of a tableless User model I have that defines a method:

where Cars are kept in the database. Then later in a controller

(okay, this is also a simplified example, but much more representative of what I'm trying to accomplish)

0 投票
9 回答
81898 浏览

ruby-on-rails - 想在 Rails 中查找没有关联记录的记录

考虑一个简单的关联......

让所有在 ARel 和/或 meta_where 中没有朋友的人最干净的方法是什么?

那么 has_many :through 版本呢

我真的不想使用 counter_cache - 从我读过的内容来看,它不适用于 has_many :through

我不想提取所有 person.friends 记录并在 Ruby 中循环它们 - 我想要一个可以与 meta_search gem 一起使用的查询/范围

我不介意查询的性能成本

离实际 SQL 越远越好……

0 投票
1 回答
3066 浏览

sql - Rails 3 / Arel 范围内的 SQL OR

我正在尝试创建一个 Rails 3 模型范围,本质上是:

问题是,我无法找到一种方法来完成这项工作。

我曾希望 arel_table 能工作,但它抱怨它“无法访问 ActiveRecord::Relation”:

这可以通过将“已发布”范围复制为 Arel 来完成,但随后我将重复代码(在我的项目中,“已发布”范围更深入)。

我能想到的最好的是:

0 投票
2 回答
25184 浏览

ruby-on-rails - 如何在 Rails 3 中订购包含的元素

我有一个模型关系,其中today有很多tasks

我正在尝试检索用户的today对象,包括tasks并将它们全部呈现给 Json。所有这一切都很顺利,直到我决定要taskstoday对象内订购,因为respond_with block它也用于呈现 html 页面。有什么方法可以包含tasks并订购它们?

我正在尝试这样的事情:

这会正确检索所有内容,但似乎根本没有对任务进行排序。

这是我曾经拥有的(效果很好,但没有订购):

我知道我可以检索数据并在之后对其进行排序,如下所示:

这可行并且会通过我的测试,但我希望有一种 ActiveRecord 方法来解决这个问题。

0 投票
1 回答
402 浏览

ruby-on-rails-3 - 如何使用 should_receive 规范 ActiveRecord::Base.find(something).method?

假设我们有以下代码:

我应该如何 Post#fix_published__at! 指定 should_receive?

0 投票
5 回答
59611 浏览

ruby-on-rails-3.1 - activerecord 中的子查询

使用 SQL,我可以轻松地进行这样的子查询

这会产生:

如何使用 rails 的 3 activerecord/arel/meta_where 做到这一点?

我确实需要/想要真正的子查询,没有 ruby​​ 解决方法(使用多个查询)。