问题标签 [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.
sql - Rails,squeel - 在“where”内循环
我想在 where 语句中使用某种循环或迭代器,例如
这样的事情可能吗?
实际上查询要复杂得多,我不想在这里发布整个架构。
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)"
即使我没有传递任何参数。以下所有操作都因该错误而失败。
任何其他型号都没有问题,我会很感激任何建议。提前致谢。
没有定义的范围。代码是:
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
ruby-on-rails - Rails,ActiveRecord,Squeel:检查数组中是否存在值
我有 2 张桌子:“演员”和“角色”。每个表都有一个名为“种族”的列。一个演员只能有 1 个种族,但一个角色可以有 1 个或多个种族。
例如,假设我想在下面找到所有符合 Actor1 种族的角色:
Actor1 - 种族:' Asian' Role1 -
种族:'Asian'
Role2 - 种族:['Asian','Caucasian']
这个查询:
将拉起 Role1,但不会拉起 Role2。我的问题是如何构造一个查询,在这个例子中会拉起 Role1 和 Role2?
我试过做:
但这似乎不起作用。
这个怎么做?
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')
我知道一定有办法解决这个问题,只是现在还没有想到。
此外,我正在使用的真实代码比我在这里描述的要复杂得多,但我已经为这个例子简化了它。
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
块有关吗?除了不,我似乎找不到其他答案,这是不可能的。
sql - 如何在 Postgres 中进行查询以按创建记录的月份对记录进行分组?(:created_at 日期时间列)
我有这个 Ruby 代码:
CreatedOnMonth 只是一个范围:
created_at
只是一个标准的日期时间时间戳。
如何优化它以进行一次查询而不是 12 次?
我看到有些人使用 GROUP_BY,但我对 PostgreSQL 不太擅长,无法自己构建这样的查询。查询应按一年中的月份对记录进行分组并返回计数。也许有人可以帮助我。谢谢。
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 语法?
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 中实现。
mysql - Rails - JOIN 子句不包括具有空外键的行
假设我有这些数据(注意author_id
第三本书中的空值):
我有一个书籍搜索栏。我希望它可以通过书名和作者姓名进行搜索。
例如,当我搜索“Susan”时。它将返回标题为“Susan”或作者姓名为“Susan”的书籍。
问题是:当我搜索“游戏”时,它只返回“饥饿游戏”。它没有选择“权力的游戏”,因为它author_id
是空的。
我在这里制作了SQLFiddle。
这是从我的 Rails 代码生成的 SQL:
结果只返回 1行:“饥饿游戏”。没有《权力的游戏》。
有没有办法包含具有空外键的行?
我将接受 SQL 查询作为答案,我将尝试自己找出 Rails 代码。
谢谢
[编辑]
这是生成 SQL 的 Rails 代码:(我使用Squeel gem)