问题标签 [squeel]

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

sql - Rails + Squeel 查询问题

完全坚持这一点,可以使用一些帮助!

我让用户输入某些偏好,然后根据这些偏好向每个用户显示一组结果。

用户与这些偏好之间存在 HABTM 关系:

用户.rb

首选项.rb

用户偏好.rb

现在,偏好有一个名为“标签”的属性,它列出了某些细节:即大、小、厚等。

我想根据他们的偏好(即基于他们选择的偏好的标签)显示每个用户项目。

现在我正在尝试:

现在,由于某种原因,这只查询标签的第一偏好。

例如,如果偏好 1 的标签是:["black", "leather", "suede"] 偏好 2 的标签是:["brown", "cloth"].......只有第一组正在作为查询传递。

0 投票
3 回答
577 浏览

ruby-on-rails - 使用 Squeel gem 查找多个时间段

我有一个Planning带有start_time属性的模型。假设我想获取上午 9 点到 12 点之间或下午 6 点到 11 点之间的所有计划。

基本上我会这样做:

问题是时隙的数量各不相同......有什么想法吗?

如果有帮助,我会使用 Squeel gem。

提前致谢!

0 投票
2 回答
391 浏览

ruby-on-rails - 用于搜索关键路径的元程序 Squeel

问题

我正试图围绕 arel 和 squeel 展开思考,但我觉得我缺乏向 Google 询问我在寻找什么的词汇。

TL;DR:有谁知道如何Model.where{related.objects.field.matches string}从组合对象中模仿 Squeel 的语法Squeel::Node

问题

这个问题演示了如何从字符串构建 Squeel KeyPath,如下所示:

在这篇文章中,情节变得更加深入,在那里我学习了如何对多列的搜索进行元编程。使用记录在案的Squeel 技巧(页面上的最后一行)进行清理,它看起来像这样:

我想要的是能够将两者结合起来,模仿

通过自己构建 squeel 对象。

第一部分很简单,在第一个示例中进行了演示。第二部分我可以直接对正在查询的表上的列进行操作,如第二个示例所示。

但是,我不知道如何对表中加入的列执行第二部分。我想我需要使用第一个示例中的对象来确定第二个示例中KeyPath的对象范围Predicate。该Predicate对象似乎仅适用于Stub表示单个表上的单个列的对象,而不是KeyPath.

以前的尝试

假设

我尝试matches在 KeyPath 上调用该方法:

我试过使用匹配运算符,=~

我试过Predicate手动构建,传入一个:matches参数:

在这里,它成功生成了 SQL(使用Model.joins{search_relation}上面的方法正确连接,为便于阅读而省略),然后假定它KeyPath是一个字段而不是遍历它。

0 投票
1 回答
276 浏览

ruby-on-rails - 使用 Squeel 时参数数量错误

首先,我在 Rails 控制台中进行简单的 squeel 测试。

新建 Ruby 项目没有问题

但是,当我将其应用于现有项目时,它会给我错误消息:

我发现的最相关的问题是Squeel issue #193

它说 Squeel 没有加载。但是,就我而言,new-created 可以在同一台机器上实现。

无论如何,我尝试按照它的说明更改 active_record.rb,但是对于我现有的项目,问题仍然存在。

我正在使用 Ruby-1.9.3-p125、Rails v3.2.6 和 Squeel 1.0.14。

0 投票
1 回答
143 浏览

ruby-on-rails - 基于项目模型的自定义过滤器/范围

我会尽量简短,但需要一些细节。我正在尝试对自定义项目管理系统的重写(在 Rails 中)进行原型设计。主要目的是帮助在阿拉巴马州搬迁或扩张的公司招聘、筛选和雇用他们的员工。当前系统运行在大多数人从未听说过的 4D 和 Active4D 上。可怕的数据库,但不错的桌面客户端/服务器系统。

对于那些可能没有听说过的人,他们在阿拉巴马州制造梅赛德斯、本田和现代,这些公司的大多数员工都是通过该机构使用该系统雇用的。除了大人物之外,还有许多其他公司使用这个经济发展机构来选择他们的劳动力。该过程主要是一个以雇用x数量员工为目标的项目。候选人是从州公民中招募的。候选人经历了一个有许多阶段或阶段的选择过程——主要是申请、面试、评估、培训和雇用。每个项目都是不同的,并且可能有一些自定义阶段。每个阶段可能有许多以某种方式评分的评估(在线申请、面试成绩单等)。完成每个阶段的评估后,候选人进入下一阶段,

虽然当前的数据库结构还可以,但我们已尝试进行一些改进。下面的模型和关系是当前原型的片段,从上到下从 Citizen 到 Project。添加了一些直通关系只是为了更好地了解数据库结构。我忘了指出每个项目可能有不同的程序,这些程序通常是基于工作的。还有许多其他模型可以帮助这个管理过程(安排活动、管理讲师等),这些没有被描述。

有一个问题来了!阶段模型是系统的关键部分,因为它是选择候选人进入下一阶段的地方。由于当前的系统是在上线之前设计的,因此教育、技能、工作经历等半静态信息没有得到很好的定义,并作为评估添加到在线应用程序中 - 这导致了静态信息的重复(公民申请多个项目,并且必须重复作为其个人资料一部分的信息)。原型仍然希望评估其中的一些信息(您是否有高中文凭或 GED?)以及自定义程序特定评估(您有多少年的焊接经验?)。

我们认为我们可以编写一个过滤器搜索来筛选静态信息并将其与自定义评估分数相结合 - 说起来容易做起来。每个项目可能都在寻找不同的教育和技能要求。这几乎就像我需要为每个项目/程序自定义范围。我刚开始研究 Ransack 和 Squeel 之类的东西,它们可能会有所帮助,但是否使用相同的过滤器取决于筛查人员 - 始终如一。

在过滤器方法之前,我想向我编写的评估引擎添加一个功能,以某种方式查询静态信息,基本上是一个问题和答案并对其进行评分。问题是您将如何处理一个过滤器,该过滤器将寻找具有特定教育成就、在不同技能方面具有特定经验水平、在其当前进度中具有特定状态等的公民,然后针对不同的计划对其进行定制?

当然,我不是在寻找具体的答案,而是在寻找方法。

0 投票
1 回答
492 浏览

sql - 将 SQL 转换为 Arel 或 Squeel

tl;博士

如何将以下 SQL 转换为 Arel(或 Rails 中被视为标准的任何内容)

--- tl 结束;博士 ----

我正在开发一个小型 Web 项目,其目标是获取我们的客户崩溃报告(当我们的桌面应用程序崩溃时,我们将诊断信息发送到我们的服务器),分析它们,然后显示导致我们的应用程序崩溃的最常见错误是什么崩溃..这样我们就专注于修复影响我们大部分用户的错误..

我有 2 张桌子:

  1. crash_infos - id, md5(堆栈跟踪的 md5。在 .net 堆栈跟踪中,异常消息有时由 .net 翻译成用户的母语!所以我基本上通过删除语言特定部分并从中生成 md5 来清理异常)

  2. 崩溃 - id、user_guid(用户 id)、crash_info_id(id 到 crash_infos 表)

现在的问题是,我想做一个查询,显示唯一用户最常见的崩溃(避免为同一用户计算多次相同的崩溃)并按崩溃次数对其进行排序。不幸的是,我对 Arel 了解的不够多(或者任何关于 Rails 的 ruby​​ 方法),所以我最终得到了原始 SQL :(

我怎样才能将它转换为更“railsy”的东西?

先感谢您

0 投票
2 回答
741 浏览

ruby-on-rails - 从多个其他 Gemfile 组合一个 Gemfile

我正在将一个大型应用程序拆分为多个较小的应用程序。这样做时,我意识到通过创建一个Gemfile.global并将其包含在我的主应用程序和子应用程序中,我可以清理我所有的Gemfiles. 例如,我所有的部署 gem 都放在 mainGemfile中,而我的 rails 放在Gemfile.global.

它几乎适用于我所有的宝石,除了一个:Squeel。

Gemfile在根应用程序中的开头是:

我的Gemfile.global样子:

bundle install效果很好,rails s几乎所有东西都像您期望的那样,以 Squeel 为主GemfileGemfile.global但是,在使用默认的 Squeel 初始化程序时,将其放入 中会破坏初始化过程:

rails s抛出一个uninitialized constant Squeel (NameError)即使bundle install报告Using squeel (1.0.13)。为什么这种组合我Gemfile的方法会弄乱 Rails 运行时常量?

0 投票
2 回答
108 浏览

ruby-on-rails - NOT IN 组合的表示

我想使用 squeel 来构建查询,例如:

IN我想知道是否有任何方法可以通过orNOT IN语句将多个字段与数组进行比较。

这样的事情(我知道这个例子不起作用)将是表达我的意思的好方法:

这样的事情可能吗?

更新

我知道如何使用 multiple 获得相同的最终结果... & (a != b) & (c != d) & ...,但这不是我所要求的。

0 投票
2 回答
145 浏览

mysql - Rails AR + Mysql - 排除电影类型无法按预期工作

假设我有一个包含流派的电影数据库,我想显示除某些特定流派之外的所有电影。我已经建立了所有协会并且工作得很好。

为此,我遇到了名为Squeel的 gem ,并编写了这段代码

所以,是的,多亏了 Squeel,我们得到了这个 SQL:

这没有包括类型,因为它们按预期工作。

因此,结果,where 条件看起来甚至不适用,因为我认为有或没有它没有区别。

看截图: 显示 sql 查询工作的 Mysql 终端输出

有谁知道为什么它不起作用,我应该从哪里开始挖掘?

非常感谢所有帮助。

0 投票
2 回答
592 浏览

ruby-on-rails - 使用 Squeel 时可以有条件地在 where 块中添加子句吗?

首先,我使用带有 Squeel 1.0.13 的 Rails v3.2.9,这就是我想要做的:

我想使用三种识别信息中的任何一种来搜索客户 - 姓名、出生日期 (dob) 和社会保险号 (sin)。结果集必须包含具有任何标识符的任何记录 - 条件的 OR。我以前在 Squeel 中做过这个,它看起来像:

只要我提供所有标识符,它就可以正常工作。但是如果我只有一个名字呢?上述范围导致:

这包括 sin 为 null 的客户端集和 dob 为 null 的客户端集,以及请求的名称为“John Doe”的客户端集。

所以输入我尝试有条件地将子句添加到where块中。起初,我尝试使用 nil? 方法:

这导致:

提出了许多其他问题,比如那个“t”是怎么回事,但这是一个切线。

没有为每个排列编写 where 子句,有没有办法可以有条件地添加子句?