问题标签 [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.
ruby-on-rails - 使用 Squeel 在同一个关联上执行多个连接
在我的应用程序中,我必须建模:工作流和步骤;步骤belongs_to
工作流程和工作流程has_many
步骤。步骤有一个索引和一个布尔状态(“完成”)。我想检索步骤 1 已完成而步骤 2 未完成的工作流,即 SQL 中的类似内容:
我试图用 Squeel 来表达这个查询,但它似乎不允许在同一个关联上进行多个连接:我找不到命名连接的方法,当我输入类似这样的内容时Workflow.joins{steps}.joins{steps}
,生成的 SQL 很简单:
知道如何实现吗?
ruby-on-rails - 为什么 Rails where 子句不返回布尔条件的结果?
我有以下 squeel 查询:
这与以下内容相同:
并执行:
但是,此查询根本不返回任何发票。如果我尝试从我的 sqlite 程序 ether 执行查询,它不起作用,似乎该查询是错误的。我绝对确定在 sqlite db 中有发票,'t' 和 'f' 作为价值。如何做到这一点?
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,那么我不能使用它来限定ActiveRecord
s,因为该 sifter 返回一个Squeel::Nodes::Predicate
对象而不是一个ActiveRecord::Relation
.
ruby-on-rails - 基于关联约束搜索实体
我有一个模型(比如用户),它有很多登录名。
是否有可能找到具有特定登录名的用户(例如提供者 == facebook。)
我知道可以使用:
但是生成的用户实体对象是只读的......我知道我可以通过在 where{} 的结果上调用readonly(true)使其可写,但不知何故感觉不对。
没有显式登录就没有办法做到这一点吗?
(在那里使用 squeel 语法)
ruby-on-rails - 在 Squeel 中加入子查询
我正在尝试制作某种关键表,将其中一个模型表(主)与它的多对多关系(rel1,rel2,...)连接起来,聚合相关模型的数量。我希望它产生类似于以下的 SQL:
我可以使用 Squeel 轻松创建内部查询:
但是现在,我不确定如何以一种好的方式将这些列子查询组合成一个汇总表。我得到的最接近的使用将子查询转换为 sql 并以这种方式处理它们:
有没有更好的方法来获得相同的结果?
UPD:看起来在这种情况下,采用 Counter Cache 方法是个好主意:
http://railscasts.com/episodes/23-counter-cache-column
但问题仍然有效:是否有一种平滑自然的方式来使用 squeel 进行子查询连接?
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)
sql - 是否可以使用范围方法生成 SQL `OR` 子句?
我正在使用 Ruby on Rails 3.2.2 和 Squeel gem。我想知道是否有一种方法可以使用多个范围方法,以便生成带有OR
与这些范围方法 SQL 条件相关的子句的 SQL 查询。也就是说,我有:
是否可以使用范围方法生成 SQLOR
子句(通过使用或不使用 Squeel gem)?
ruby-on-rails - Rails HABTM 协会
我有自我参考habtm
关联。
但是当我创建查询(使用squeel
)时:
架构:
我收到错误:
我哪里弄错了?谢谢。
ruby-on-rails - Squeel和Arel的区别?
谁能为 Rails 新手解释两个外观非常相似的宝石“Arel”和“Squeel”之间的区别。
https://github.com/rails/arel与https://github.com/ernie/squeel
我期待构建一个简单的查询构建器,用户将获得某些 UI 块,可用于构建 SQL 查询。两者中的哪个宝石更合适,为什么?
类似问题: rails 中的 SQL 查询生成器
ruby-on-rails - Squeel 将字符串评估为连接的关键路径
这是我真正想做的事情:
我将有一个代表squeel keypath的字符串。我想将此字符串发送到连接语句中。
但这是我得到的错误:
我试过了:
但这不起作用......我错过了什么?
我在 github 页面上没有看到任何关于此的文档:https ://github.com/ernie/squeel/
感谢您的任何帮助!
更新:
我发现了一种非常令人困惑的方法来解决这个问题:
这将输出:
这可以传递给joins squeel函数。我确信必须有比构造嵌套符号更好的方法:(