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

ruby - 为什么使用 SQL 构建器?Arel 诉 Sequel 诉 T-SQL

我试图了解通过面向对象的构建器 DSL 构建 SQL 与参数化原始 SQL 字符串的好处。在以三种方式研究/实现相同的查询之后,我注意到原始 SQL 是迄今为止最容易阅读的。这就引出了一个问题,“为什么要跳过篮筐?” 为什么不直接声明和使用原始 SQL?

这是我想出的:

首先,我猜它使 SQL 更便携,因为它可以被任何带有适配器的数据库使用。我想这是大佬吧?不过,大多数数据库不是可以理解大多数 T-SQL 吗?

其次,它提供了一个可以重用的查询对象——作为其他查询、命名范围链接等的基础。

通过构建 SQL 而不是声明它,您实现的主要投资回报是什么?

我非常欣赏命名范围,并了解将它们链接起来是如何有益的。我不担心通过模型访问相关记录。我纯粹是在谈论构建一个复杂的查询。

0 投票
1 回答
5745 浏览

ruby-on-rails - 不区分大小写的搜索与活动记录

我使用导轨 3.0.4

这是我的 rails 应用程序中的一段 Arel 查询,如何使用 upcase 方法以与数据库无关的方式进行不区分大小写的搜索?

谢谢

0 投票
5 回答
15630 浏览

ruby-on-rails-3 - Arel、联接和 Rails 查询

我最近被一个问题困住了一段时间,并找到了通往 Arel 的方法,看起来它应该允许我在查询中执行 OR。

作为起点,我需要将现有的 Rails 3 查询转换为 Arel,这就是我遇到问题的地方。

以下范围和查询按我的预期工作。它给了我与特定用户的广告相关的请求。

根据 Arel github 页面和 Railscast 215 上的 doco,我应该能够执行以下操作来使用 Arel 复制查询

这会导致错误

我可以在控制台中执行以下操作

所以看起来它正在形成 SQL 请求,但是当你把它放在 where

我得到以下

我已经尝试在 where 中执行其他 Arel 操作并且它有效(例如)

这有点超出了我不断增长的 rails/ruby 知识。有任何想法吗?

提前致谢。

0 投票
6 回答
27298 浏览

ruby - 如何使用 Active Record 查找具有重复数据的记录

使用 ruby​​ 和新的 Activerecord 在列中查找具有重复值的记录的最佳方法是什么?

0 投票
2 回答
4942 浏览

ruby-on-rails - 如何使用 arel/关系代数和 has_many 获取不同的值:通过

当我尝试显示一个人参与的所有电影,并且他们在一部电影中扮演多个角色(导演、作家、演员)时,我会得到该电影的多行。如果我添加 .select('DISTINCT id') 或 movies.* 来尝试消除重复,我会收到以下错误:

Mysql2::Error: 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法,以便在 'DISTINCT id FROM moviesINNER JOIN movie_peopleON movies.id = movie_peop' at line 1: SELECTmovies .*, DISTINCT id FROMmovies INNER JOINmovie_people ONmovies .id =movie_people .movie_id WHERE ((movie_people`.person_id = 601619)) ORDER BY title LIMIT 18 OFFSET 0附近使用

我不知道如何正确编码 arel 请求。请帮忙。
谢谢你。

应用程序/控制器

应用程序/模型

数据库/schema.rb

电影/show.html.erb

标题:华氏 9/11
年:2004 年
导演:迈克尔·摩尔
编剧:迈克尔·摩尔
演员:迈克尔·摩尔乔治·W·布什

人/show.html.erb

名称: Michael Moore
华氏 9/11 (2004)
华氏 9/11 (2004)
华氏 9/11 (2004)

0 投票
1 回答
925 浏览

ruby-on-rails - Rails 3:订购在一个查询中使用 has_many 和 belongs_to 关联的查询

在我的 Rails 数据库方案中,有以下结构:

任务有很多工作工作属于一类

我想要实现的是加载所有任务以及按类别排序的所有相关作业。所以结果应该是这样的:

任务 1 作业 1 -> 类别 1 作业 3 -> 类别 2 作业 2 -> 类别 3

任务 3 工作 5 -> 类别 1 工作 9 -> 类别 2 工作 4 -> 类别 3

注意:类别的排序不是它们的ID,它是一个列。

目前唯一可行的解​​决方案是使用 Ruby 而不是 SQL 来排序作业,这非常糟糕。我只是偶然发现了 has_many 关联中的 :finder_sql 选项,但我不确定这是否可行。

0 投票
2 回答
1392 浏览

ruby-on-rails - “不正确”与 Rails 3 查询或 meta_where

我需要的可能很简单:

Table.where('field is not true')

但我不知道这是如何使用 Rails 3 查询接口完成的,可能还有meta_where。问题是虽然 ":field.not_eq => nil" 正确转换为 "IS NOT NULL",但 ":field.not_eq => true" 变成 "!= 1",这显然与 "IS NOT TRUE" 不同"(mysql 和 postgresql 扩展)。

0 投票
1 回答
680 浏览

ruby-on-rails-3 - Rails 3:选择子模型具有一定条件的所有子模型

我的 Rails 数据库方案有项目和任务。我想展示至少有一个未完成任务的项目。这是我的代码:

此代码正确返回具有一项打开任务的项目,但仅返回一项打开任务而不是全部。例如,一个项目总共有 5 个任务和 2 个打开的任务,上面的代码将只返回具有 2 个任务的项目。我知道我可以简单地强制重新加载项目,但这非常hackish并且存在性能问题。如何获得包含所有任务的项目?

0 投票
2 回答
6662 浏览

sql - 使用 Arel 生成子查询以获得平均值

假设我有几张桌子

一个经理有很多商店,一个商店有很多订单。

有一天,我想查询经理工作的订单的平均总数。哦,我想按商店分组。所以要明确一点,我想获得经理的平均订单总数,对于他们工作的每家商店。

假设我们已经查找了我们的经理:

是的,效果很好。但是我怎样才能查询这些平均值的平均值呢?

获取此查询的 Arel 是什么?

有人知道吗?

0 投票
2 回答
3353 浏览

ruby-on-rails - 在活动记录中使用 arel 的关系计数

我很难从活动记录中弄清楚如何在 arel 中执行此查询以及其他类似的查询。

从表面上看,它看起来就像 Nik 的示例(http://magicscalingsprinkles.wordpress.com/2010/01/28/why-i-wrote-arel/):

但我无法使用活动记录在 Rails 中工作。我认为等价物应该是这样的,但它会出错:(

关于如何做的任何想法?