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

sql - Rails,squeel - 在“where”内循环

我想在 where 语句中使用某种循环或迭代器,例如

这样的事情可能吗?

实际上查询要复杂得多,我不想在这里发布整个架构。

0 投票
0 回答
387 浏览

ruby-on-rails - Rails 4 ActiveRecord::Relation ArgumentError 没有意义

这是一个相当简单的 Rails 4 情况。模型 Intranet has_many 活动。存在的活动具有多个 Intranet 的足够记录。Current_intranet.activities.size 返回 69 条记录。但是,每当我尝试访问任何记录时,我都会收到“输出错误:<ArgumentError: wrong number of arguments (1 for 0)"即使我没有传递任何参数。以下所有操作都因该错误而失败。

任何其他型号都没有问题,我会很感激任何建议。提前致谢。

没有定义的范围。代码是:

0 投票
1 回答
196 浏览

ruby-on-rails - Squeel 在 Rails 控制台中工作,但不在控制器中。错误:nil:NilClass 的未定义方法“方法”

我正在使用 Squeel,但我遇到了一个奇怪的问题。以下行在 Rails 控制台中运行良好,但在模型控制器中运行时出错!

Issue.joins{property.users}.where{property.users.id == 1}

发布belongs_to 属性和属性has_and_belongs_to_many 用户。我正在尝试加载与 user_id == 1 相关的所有问题。

当我在 IssuesController 中运行该行时,我收到错误:“ undefined method `users' for nil:NilClass ”,但它在 Rails 控制台中有效。怎么了?

PS 我正在运行 Rails 4.0.3、Ruby 2.0.0 和 Squeel 1.1.1

0 投票
1 回答
936 浏览

ruby-on-rails - Rails,ActiveRecord,Squeel:检查数组中是否存在值

我有 2 张桌子:“演员”和“角色”。每个表都有一个名为“种族”的列。一个演员只能有 1 个种族,但一个角色可以有 1 个或多个种族。

例如,假设我想在下面找到所有符合 Actor1 种族的角色:
Actor1 - 种族:' Asian' Role1 -
种族:'Asian'
Role2 - 种族:['Asian','Caucasian']

这个查询:

将拉起 Role1,但不会拉起 Role2。我的问题是如何构造一个查询,在这个例子中会拉起 Role1 和 Role2?

我试过做:

但这似乎不起作用。

这个怎么做?

0 投票
1 回答
49 浏览

ruby-on-rails - ruby - 评估从另一个方法返回的代码

红宝石 2 和导轨 4

考虑这段代码:

这本身就可以正常工作。

我想做的是(group_id.in [1,2,3,4]) | (event_id.in [5,6,7,8])从局部变量、方法、块或其他东西中获取并让它来。

我有很多查询,并希望将这段代码包含在一个地方。

我已经尝试了几件事,比如使用带有产量、Proc 和 Lambas 的块。我似乎一直卡在:NameError (undefined local variable or method 'group_id')

注意:我使用的是 squeel,它包含自己的 DSL,instance_eval用于其块。这应该没问题,因为我可以通过my{<method_name_here>}.

这是我尝试过的:

我能得到的最好的是:NameError (undefined local variable or method 'group_id')

我知道一定有办法解决这个问题,只是现在还没有想到。

此外,我正在使用的真实代码比我在这里描述的要复杂得多,但我已经为这个例子简化了它。

0 投票
2 回答
124 浏览

ruby - 在 where 块中变量存在的 ActiveRecord 条件

我使用 Squeel 编写了这段代码,效果很好:

这只会在entry[:variable_name]存在 时为该列创建查询,否则它将忽略它,非常方便。产生如下查询:

这个块的好处是我不必担心变量是否存在,如果只有1个变量,查询将不会使用OR语句等。这很难用常规编写条件而不造成大混乱。

另请注意,此查询的重点是在变量不存在时不使用。 column = NULL进行搜索column = NULL将检索到一堆无用和错误的命中。

然而,Squeel 不再维护,并且在 ActiveRecord 4.1(以及 Rails 4.1 的扩展)方面存在各种失败问题。因此,如果我想使用AR 4.1.1及以上,我唯一的选择就是摆脱我拥有的所有 squeel 查询。

我的问题是,这可能与 AR.where块有关吗?除了不,我似乎找不到其他答案,这是不可能的。

0 投票
1 回答
2128 浏览

sql - 如何在 Postgres 中进行查询以按创建记录的月份对记录进行分组?(:created_at 日期时间列)

我有这个 Ruby 代码:

CreatedOnMonth 只是一个范围:

created_at只是一个标准的日期时间时间戳。

如何优化它以进行一次查询而不是 12 次?

我看到有些人使用 GROUP_BY,但我对 PostgreSQL 不太擅长,无法自己构建这样的查询。查询应按一年中的月份对记录进行分组并返回计数。也许有人可以帮助我。谢谢。

0 投票
1 回答
269 浏览

ruby-on-rails - 如何在带有 squeel 的 Rails 中使用连接

如何使用连接或其他方式让我使用 where 查询来比较另一个模型中的其他条件?

模型关系

它有效,但返回我的列SonyAlarmTest,我想要的列sony_alarm_logs

它失败了,得到ActiveRecord::ConfigurationError: Association named 'sony_alarm_tests' was not found on SonyAlarmLog; perhaps you misspelled it?错误

更新(修复:它应该使用单数名称)

但是还是ActiveModel::MissingAttributeError: missing attribute: firmware_version报错

我认为这可能是滥用 squeel 语法?

0 投票
0 回答
253 浏览

mysql - Rails 4 Active Record 2不同的关系相同的模型范围

我有这些模型:

我需要有一个范围来找到 martian.skill.name = 'drive' 或 person.skill.name = 'drive' 的宇宙飞船

起初看起来很容易,但事实并非如此:

这个范围不起作用,因为只考虑了关联martian.skill

我尝试在 SQL 中制作连接部分并使用表别名。它可以工作,但与其他范围链接时会出现 SQL 错误。

我也尝试过,joins(...).merge(joins(...))但我仍然只得到最后一个关系。

Active Record 没有'union' 声明,我已经看到了一些实现它的方法,但我不知道它是否会太复杂和hacky。

任何想法?

谢谢。

编辑:

到目前为止,我使用squeel where{(martian.skill.eq skill_name)|(people.skills.eq skill_name)}解决了它,但我想知道它是否可以在普通 AR 中实现。

0 投票
2 回答
1662 浏览

mysql - Rails - JOIN 子句不包括具有空外键的行

假设我有这些数据(注意author_id第三本书中的空值):

我有一个书籍搜索栏。我希望它可以通过书名和作者姓名进行搜索。

例如,当我搜索“Susan”时。它将返回标题为“Susan”或作者姓名为“Susan”的书籍。

问题是:当我搜索“游戏”时,它只返回“饥饿游戏”。它没有选择“权力的游戏”,因为它author_id是空的。

我在这里制作了SQLFiddle

这是从我的 Rails 代码生成的 SQL:

结果只返回 1行:“饥饿游戏”。没有《权力的游戏》。

有没有办法包含具有空外键的行?

我将接受 SQL 查询作为答案,我将尝试自己找出 Rails 代码。

谢谢

[编辑]

这是生成 SQL 的 Rails 代码:(我使用Squeel gem)