问题标签 [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 投票
3 回答
5807 浏览

activerecord - 使用 Arel 进行嵌套集和连接查询并转换为 ActiveRecord::Relation

我有一个组织模型(嵌套集)。我有一个人的模型。一个人可以有另一个人作为代理人。一个组织归一个人所有。组织仅对所有者或其代理人可见。

我想检索给定人可见的所有组织,即。由该人拥有或由该人拥有的所有组织,该人是其代表:

可能有更好的方法来制定最后一个联接,但我想将人员及其代表的查询与人员及其代表可见的组织的查询分开。

最后一个连接返回一个 Arel::SelectManager (似乎没有任何有用的文档)。

有没有办法将 SelectManager 转换回 ActiveRecord::Relation 以从“组合下的闭包”的整个概念中受益?

如何再次自行加入上述关于组织的查询,以获取个人或其代理人可见的组织的所有后代?我知道 SQL,但总是无法使用 SelectManager 对组织进行自我加入。

0 投票
1 回答
2220 浏览

ruby-on-rails-3 - 如何使用 Rails 3 和 Arel 加入子选择(范围)?

我需要将一个表加入到 select/group-by 查询(包括同一个表)中,我想使用 Arel 来完成。

我有一个表:phenotypes其中是has_and_belongs_to_many :genes,哪些是他们自己has_and_belongs_to_many :orthogroups。因此,表型和邻位群之间的关系是多对多的。

我有两个范围(在正交组上),它们获取与特定表型相关的所有正交组:

因此,doingOrthogroup.with_associated_gene_ids_for_phenotype(48291)应该返回一个正交组 ID 表以及将它们与表型联系起来的基因。

那东西一切正常。

问题是我想获取其余部分orthogroups.*并将其加入第二个范围的结果,因此基因列表基本上就像我的 Orthogroup ActiveRecord 模型上的一个额外字段。

大致是这样的:

现在,该查询似乎起作用了。但我更愿意找到一种方法将 Orthogroup 表直接加入它自己的范围以获取这些基因。

也许使用 SQL 会更简单,但似乎 Arel 应该有一个简单的方法。我发现了几个类似的问题,但似乎都没有答案。

我找到的最接近的解决方案是:

输出的 SQL 在两个上下文中使用表“正交组”,这让我很担心;但是,对结果的抽查表明查询是正确的。

尽管如此,这并不是我所希望的优雅解决方案。没有尴尬就可以做到这一点"inner join (...)"吗?

0 投票
2 回答
3998 浏览

sql - 在 Rails3 中使用 ARel 构建子查询

我正在尝试在 ARel 中构建此查询:

它返回每个俱乐部每次会议的平均出席人数。(一个俱乐部有很多会议,一个会议有很多参加者)

到目前为止,我已经(在 Club < ActiveRecord::Base 类中声明):

但是,我收到了错误:

生成非平凡 ARel 查询的文档有点难找。我一直在使用http://rdoc.info/github/rails/arel/master/frames我是不是错误地接近了这个?还是我离解决方案还有一些方法?

0 投票
1 回答
501 浏览

sql - 是否可以在使用连接的 ARel 查询中构造动态聚合列?

下面是我的问题的一些示例上下文,以帮助澄清我在问什么......

架构

数据

在结果集中,我想要一个表格,每个用户一行,每个主题两列,一个显示主题正确答案的总和,一个显示错误答案的总和对于那个话题。对于上面的示例数据,此结果集如下所示:

我想要的结果

显然,如果 Topics 表中有更多主题,我希望这个查询为每个存在的主题包含新的正确总和和不正确总和,所以我正在寻找一种方法来编写它而不将主题 ID 硬编码到总和函数中我的选择子句。

有没有一种聪明的方法可以用 ARel 来魔术这种事情?

0 投票
2 回答
326 浏览

sql - 如何在 Rails3 中执行搜索?

我知道我可以通过调用where()模型来搜索查询,如下所示: Post.where(:title => 'My First Post')

但是,如果我不知道用户是否想过滤掉搜索参数怎么办?例如,我有一个包含可选title字段的搜索表单。如果标题已填写,则表单应搜索标题。但是,如果不是,则表单应该只返回所有字段。

我尝试按照以下方式做一些事情

但是,当我调用 Post.all 时,Rails 会立即返回搜索结果,我无法进一步添加条件/

我该怎么做呢?

谢谢!

0 投票
4 回答
22590 浏览

activerecord - 如何从 Rails 中的查询中排除 id 数组(使用 ActiveRecord)?

我想执行一个 ActiveRecord 查询,该查询返回除具有特定 ID 的记录之外的所有记录。我想排除的 id 存储在一个数组中。所以:

我不确定如何完成第二行。

背景:我已经尝试过的:

我不确定背景是否必要,但我已经尝试过 .find 和 .where 的各种组合。例如:

这些都失败了。 这个技巧可能在正确的轨道上,但我没有成功地适应它。任何帮助将不胜感激。

0 投票
2 回答
433 浏览

sql - 嵌套sql查询时:has_and_belongst_to_many

在我的应用程序中,下一个任务尚未由用户完成。我有三个模型,一本有很多任务的,然后我有一个拥有并属于许多任务的用户。表 tasks_users 表包含所有已完成的任务,因此我需要编写一个复杂的查询来查找下一个要执行的任务。

我在纯 SQL 中提出了两种可行的解决方案,但我无法将它们翻译成 rails,这就是我需要帮助的地方

同样没有嵌套选择

这就是我在 Rails 中使用 MetaWhere 插件所做的

但我也不知道如何让当前用户在那里,

谢谢你的帮助!

0 投票
2 回答
1493 浏览

ruby-on-rails - Rails3中的选择奇怪的事情

在我的应用程序中,我有这条线

它工作正常。
当我将它重写为 Rails3 语法时,

它给我一个错误,说

所以,我在控制台做了一些随机查询,发现:

返回相同的错误,而

工作正常。

有人可以告诉我这样做的原因。我一直在挠头,但没有找到适当的理由:

Model.select(attribute) 将首先获取所有记录并选择它们的名称,然后它会在 id_array 中找到具有匹配 id 的记录。

如果我只想要 10 个记录的名称,那么上面的查询将首先从表中检索所有记录的名称,然后让我获得所需的 10 个名称。


编辑:注意:以下查询工作正常:

0 投票
2 回答
283 浏览

ruby-on-rails - Rails 认为它​​是复数形式,所以从 business 一词中删除“s”?

得到我:

为什么它总是错过一个业务或没有检测到模型?我确定是我在这里搞砸了。: (

0 投票
1 回答
533 浏览

sql - Rails 3 投票表加入问题

我有一个表posts和一个多态表votes

votes表如下所示:

我想列出用户尚未投票的所有帖子。现在我基本上把他们已经投票过的所有帖子都拿走了,然后从整套帖子中减去。它可以工作,但它不是很方便,因为我目前拥有它。