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

ruby-on-rails - 使用 Squeel 在同一个关联上执行多个连接

在我的应用程序中,我必须建模:工作流和步骤;步骤belongs_to工作流程和工作流程has_many步骤。步骤有一个索引和一个布尔状态(“完成”)。我想检索步骤 1 已完成而步骤 2 未完成的工作流,即 SQL 中的类似内容:

我试图用 Squeel 来表达这个查询,但它似乎不允许在同一个关联上进行多个连接:我找不到命名连接的方法,当我输入类似这样的内容时Workflow.joins{steps}.joins{steps},生成的 SQL 很简单:

知道如何实现吗?

0 投票
2 回答
1610 浏览

ruby-on-rails - 为什么 Rails where 子句不返回布尔条件的结果?

我有以下 squeel 查询:

这与以下内容相同:

并执行:

但是,此查询根本不返回任何发票。如果我尝试从我的 sqlite 程序 ether 执行查询,它不起作用,似乎该查询是错误的。我绝对确定在 sqlite db 中有发票,'t' 和 'f' 作为价值。如何做到这一点?

0 投票
2 回答
183 浏览

sql - 是否可以在 `where` 方法/子句中“添加”与 `scope` 方法相关的 SQL 子句?

我正在使用 Ruby on Rails 3.2.2 并且正在试验 Squeel gem。我想知道(以某种方式,通过使用 Squeel gem 与否)是否可以在子句中scope“直接”“添加”与方法相关的 SQLwhere子句。也就是说,我有:

因此,当我运行时,Article.scope_method_name(@current_user).to_sql它应该返回如下内容:

尝试过 sifters,但那些(至少对我而言)是专门用于其他Squeel 语句的。也就是说,如果我声明一个 sifter,那么我不能使用它来限定ActiveRecords,因为该 sifter 返回一个Squeel::Nodes::Predicate对象而不是一个ActiveRecord::Relation.

0 投票
0 回答
57 浏览

ruby-on-rails - 基于关联约束搜索实体

我有一个模型(比如用户),它有很多登录名。

是否有可能找到具有特定登录名的用户(例如提供者 == facebook。)

我知道可以使用:

但是生成的用户实体对象是只读的......我知道我可以通过在 where{} 的结果上调用readonly(true)使其可写,但不知何故感觉不对。

没有显式登录就没有办法做到这一点吗?

(在那里使用 squeel 语法)

0 投票
0 回答
881 浏览

ruby-on-rails - 在 Squeel 中加入子查询

我正在尝试制作某种关键表,将其中一个模型表(主)与它的多对多关系(rel1,rel2,...)连接起来,聚合相关模型的数量。我希望它产生类似于以下的 SQL:

我可以使用 Squeel 轻松创建内部查询:

但是现在,我不确定如何以一种好的方式将这些列子查询组合成一个汇总表。我得到的最接近的使用将子查询转换为 sql 并以这种方式处理它们:

有没有更好的方法来获得相同的结果?

UPD:看起来在这种情况下,采用 Counter Cache 方法是个好主意:

http://railscasts.com/episodes/23-counter-cache-column

但问题仍然有效:是否有一种平滑自然的方式来使用 squeel 进行子查询连接?

0 投票
2 回答
1068 浏览

join - 如何在 Squeel 中加入带有条件的子查询

序幕

我已经拥抱了 Squeel——并且享受每一步!非常感谢你的分享,厄尼米勒!

我正在使用 ruby​​ 1.9.2 和 Squeel 1.0.2 和 Rails 3.2.5 进行开发

(我承认已经完全重组了问题 - 希望增加可读性并更好地获得答案)<:)

用例

我希望(超级)用户能够像这样分配授权和权限

  • 一个 user_group 应该能够拥有多个授权
  • 一个授权应该能够拥有多个权限
  • 权限应该能够控制对(操作)数据的访问
    • 通过控制器(请求路径)
    • 在类的实例上
    • 在任何特定情况下

ACL 系统应该是惰性的——即如果没有给出角色/授权,用户显然根本不关心 ACL。

迁移

我从用例中确定了角色和(多态)可角色实体,因此我有

一个与众不同的角色

和一个角色更具描述性

课程

系统有一个通用类 - AbstractActionBase - 它继承自 ActiveRecord:Base,所有类都继承自它(允许我在一个地方添加系统范围的属性和方法)

所以 - 部分 - 我的 AbstractActionBase 看起来像

Role 类的一部分看起来像这样

Roleable 类看起来像这样

逻辑

创造

这允许我授权- 将角色分配给某人/某物 - 在这种情况下,授权字符串为零,例如

使用 Roleable.create({ role: @sales, roleable: @user_group })为user_group sales分配角色sales

同时我可以做权限——描述任何角色的细节——比如

角色sales对 OrderHead 和 OrderDetail 表具有索引创建编辑删除权限

  • Roleable.create({角色:@sales,授权:“索引,创建,编辑,删除”,角色:@user_group,控制器:“order_heads”})
  • Roleable.create({角色:@sales,授权:“索引,创建,编辑,删除”,角色:@user_group,控制器:“order_details”})

这些“细节”可以是空灵的

Roleable.create({角色:@sales,授权:“索引”})

有点真实

Roleable.create({角色:@sales,授权:“索引”,角色类型:'OrderHead'})

或非常表达

Roleable.create({ 角色:@sales,授权:“索引”,角色:OrderHead.first })

选择

大多数控制器都从定义索引(和其他操作)的 AbstractActionsController 继承。它自己从 InheritedResources:Base 继承的那个控制器就像这样

挑战

提出一个简短的问题是多么漫长的故事<:)

如何编写with_authorizations返回 ActiveRelation 的方法(最好使用 Squeel)

0 投票
1 回答
173 浏览

sql - 是否可以使用范围方法生成 SQL `OR` 子句?

我正在使用 Ruby on Rails 3.2.2 和 Squeel gem。我想知道是否有一种方法可以使用多个范围方法,以便生成带有OR与这些范围方法 SQL 条件相关的子句的 SQL 查询。也就是说,我有:

是否可以使用范围方法生成 SQLOR子句(通过使用或不使用 Squeel gem)?

0 投票
1 回答
233 浏览

ruby-on-rails - Rails HABTM 协会

我有自我参考habtm关联。

但是当我创建查询(使用squeel)时:

架构:

我收到错误:

我哪里弄错了?谢谢。

0 投票
1 回答
663 浏览

ruby-on-rails - Squeel和Arel的区别?

谁能为 Rails 新手解释两个外观非常相似的宝石“Arel”和“Squeel”之间的区别。

https://github.com/rails/arelhttps://github.com/ernie/squeel

我期待构建一个简单的查询构建器,用户将获得某些 UI 块,可用于构建 SQL 查询。两者中的哪个宝石更合适,为什么?

类似问题: rails 中的 SQL 查询生成器

0 投票
2 回答
555 浏览

ruby-on-rails - Squeel 将字符串评估为连接的关键路径

这是我真正想做的事情:

我将有一个代表squeel keypath的字符串。我想将此字符串发送到连接语句中。

但这是我得到的错误:

我试过了:

但这不起作用......我错过了什么?

我在 github 页面上没有看到任何关于此的文档:https ://github.com/ernie/squeel/

感谢您的任何帮助!


更新: 我发现了一种非常令人困惑的方法来解决这个问题:

这将输出:

这可以传递给joins squeel函数。我确信必须有比构造嵌套符号更好的方法:(