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

ruby-on-rails-3 - Squeel 查询语法检索共享同一组的用户元素

使用 Ruby on Rails 3.2.13 和 Squeel 我有以下模型:

字符有一个布尔属性:public

在 Character 模型中,我想检索当前用户可见的所有字符,由以下条件确定:

  1. 该角色属于当前用户或
  2. 角色是公开的或
  3. 当前用户与角色的用户共享一个群组

结果必须是ActiveRecord::Relation.

匹配前两个条件很简单:

对于第三个条件,以下查询会产生正确的结果,但可能不是最好的方法:

此外,我找不到连接两个结果的方法,从而产生ActiveRecord::Relation包含两个查询的结果(merge产生匹配两个查询的元素,并+返回 anArray而不是 an ActiveRecord::Relation)。

非常感谢有关如何在单个 Squeel 查询中处理此问题的任何帮助。

0 投票
1 回答
277 浏览

ruby-on-rails-3 - Rails 3:多态条件查询

我有以下型号:

如您所见,通知可以是“退回电子邮件通知”或“用户通知电子邮件通知”类型。该BounceEmailNotification模型具有事件字符串属性。如果我想检索具有特定事件值的所有用户通知电子邮件通知和所有退回电子邮件通知,该created_at怎么办?

像这样的东西(使用squeel):

会工作,但我不想使用 Ruby 来订购通知。我能做些什么?谢谢

0 投票
1 回答
64 浏览

ruby-on-rails-3 - Rails 和 PostgreSQL 的问题

我正在尝试从以下操作表中检索表:

列:ID、名称、状态、Product_ID、User_ID 和其他几个与此问题无关的列。

每次用户想要产品时,我都会创建这样的记录:名称 = 想要,状态 = True,Product_ID = 想要的产品的 ID,而 User_ID 是用户的 ID。

然后,每次用户不需要产品时,我都会创建这样的记录:名称 = 想要,状态 = False,Product_ID = 不需要的产品 ID,而 User_ID 是用户的 ID。

我这样做是因为我的表中有其他操作的名称。

现在我想检索所有想要的产品,所以我应该检索所有按product_id 分组的最后想要的操作,以按created_at 降序排序的特定用户,然后只检索status = true 的操作。

因此,为了获得按 product_id 为用户分组的所有最后想要的操作,我这样做了:

检索每个产品和用户的最后操作,但同时检索真假状态 唯一的问题是我不知道如何过滤此表以仅在为真时获取操作。

我试着这样做:

但这会给我最后一个想要 = true 的动作。如果最后一个动作是 status = false,它将在 status = true 时检索之前的动作。

这是我想要的一个想法,但我不知道如何使用 rails 来实现: http ://sqlfiddle.com/#!9/e4117/3

0 投票
1 回答
366 浏览

sql - Ruby Gem Squeel,如何编写自联接

我正在尝试使用 ruby​​ gem Squeel编写以下查询

关于如何实现这一目标的任何想法?

我可以使用以下方法获取 seasons_ids:

但是自我加入有条件,到目前为止我不知道如何解决这个问题。

0 投票
2 回答
1305 浏览

ruby-on-rails - 与限制关联的高级活动记录查询

我正在尝试使用 activerecord 进行更高级的查询,但无法找出编写它的最佳方法。希望这是有道理的......

我的 POSTGRES/rails 应用程序有模型:

评估有小数列:score。我想按名称获得公司的 10 个最低评价分数。但我也只想从每个员工那里得到一个最低分。我不希望我的结果列表中的 10 个分数中有 5 个都来自同一个员工 ID。

我有:

但是我正在努力解决如何将评估限制在单个employee.id 上的单个低值

做这个的最好方式是什么?

0 投票
0 回答
2420 浏览

ruby-on-rails - rails squeel 右外连接

如何使squeel生成RIGHT OUTER JOIN?

这个:

生成外连接。

不,我做不到Comment.joins{user.outer},整个查询要复杂得多,我必须从User.

如果不在squeel中,也许有人知道准备此类查询的其他 Rails 方式?

编辑:

谢谢@cpuguy83。我从第一条评论中尝试了解决方案,但这并不是那么简单。我正在尝试做的正确连接只是链式查询的开始。我需要另一个电话来joins加入通过Comment. 不幸的是,如果我这样做:

User.joins("right outer join comments").joins(comments: :author)

我将comments关系加入了两次:一次是通过第一次调用加入,一次是通过第二次调用。有没有办法解决它,或者我应该切换到另一个joins使用原始 SQLJOIN语句的调用?

0 投票
0 回答
277 浏览

sql - 使用 SET 将复杂的 SQL 查询转换为 Arel 或 Squeel

如何使用ARELSqueel翻译给定的查询:

将它用作原始 SQL 的解决方案也将受到欢迎,因为到目前为止我无法让它运行。

更新:在SQL 请求中描述了周期模型和目标,以查找周期是否被完全覆盖

UPDATE2:如果我尝试使用原始 sql 查询,例如:

我收到以下错误:

0 投票
1 回答
625 浏览

ruby-on-rails-3 - 使用 PostgreSQL 函数在 ruby​​/rails 中插入和更新

我在面向地理的应用程序中使用 activerecord-postgis-adapter 和 squeel。使用基于 find 和 where 工作正常和 squeel 的各种查询获取数据允许我使用 PostgreSQL/PostGIS 函数基于空间函数和数据类型进行查询。

但是,我不知道在执行 INSERT 和 UPDATE 时如何访问类似的功能。假设我想做以下事情:

我怎么能执行这样的查询?Squeel 似乎甚至不支持 SELECT 以外的其他查询。

在一个完美的世界中,我什至希望 Rgeo 的数据类型在用于 UPDATE 查询时自动转换,就像 where 查询一样。

我知道我可以退回到

ActiveRecord::Base.connection.execute

,但宁愿避免这种情况,除非有人告诉我这是唯一的方法。

-ra

0 投票
1 回答
151 浏览

ruby-on-rails - Rails - 如何使用 Squeel 搜索关联的属性

我认为这是一个简单的问题:

我有一个建筑模型,每个建筑都有_一个城市,每个城市都属于_建筑。我想使用 Squeel 对建筑物的城市名称(而不是 id)进行搜索。

目前我有:

通过邮政编码搜索工作正常,因为这是建筑模型的直接属性。这是我正在努力解决的第二个条款。

现在,我收到此错误:

我怎样才能使这项工作?

0 投票
1 回答
74 浏览

ruby-on-rails - 由关联计数组成的 Rails 查询,最好使用范围

我一直在为我的服务制作一个搜索页面,它包括几个基于关联的搜索参数,我可以想到一些凌乱的长 sql 混乱,但更喜欢一些更干净的方法,作为示例,

Friend 有一个表示友谊状态的属性,例如friend_type

搜索表单将包含许多参数,其中两个用于搜索拥有超过一定数量朋友的人,以及有多少人的朋友的朋友类型设置为“bff”。

我想做的是在模型中有一些范围方法,并且在控制器中能够做到这一点,

像这样的 Person 中的一些模型范围,

并在控制器中调用它们,

我一直在尝试 squeel,这似乎是一个非常好的资产,考虑到它可以调用查询中的方法。是否可以以这种方式完成搜索查询?

如果有更好的方法来解决这个问题,那将不胜感激。