问题标签 [active-relation]
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 - ActiveRelation 将如何影响 rails 的 includes() 的功能?
我查看了 Arel 源代码和 Rails 3.0 的一些 activerecord 源代码,但我似乎无法为自己找到一个好的答案,即在构建查询时 Arel 是否会改变我们使用包含()的能力, 为了更好。
在某些情况下,可能需要修改 activerecord 的条件:包括 2.3.5 及之前的查询,以获取将返回的关联记录。但据我所知,对于所有 :include 查询来说,这在编程上是站不住脚的:
(我知道一些 AR-find-includes 使 t#{n}.c#{m} 重命名所有属性,并且可以想象为这些查询添加条件以限制连接集的结果;但其他人则 n_joins + 1 number对 id 集的查询是迭代的,我不确定如何破解 AR 来编辑这些迭代的查询。)
Arel 是否允许我们在使用 include() 时构造 ActiveRecord 查询来指定生成的关联模型对象?
前任:
ruby-on-rails - (NULL) 中的 NULL 不正确匹配
使用 Rails 3 主动关系,我有一个范围:
这在 :email 为 NULL 时会出现问题。它返回零行,而实际上它应该返回至少 1 行,即duplicate_contact(contact).size == 0
当它应该为假时为真。
我认为这与 mysql 文档中的这种说法有关:“在 SQL 中,与任何其他值相比,NULL 值永远不会为真,即使是 NULL。”
我怎样才能让它返回正确的结果?
ruby-on-rails - rails 3.0.3 - ActiveRecord::Relation,未定义的方法错误
我有这个无法解释的 ActiveRecord::Relation, undefined method error 。我不知道为什么,因为我的模型关联定义明确并且事件表具有用户表的外键。我尝试使用此修复程序,但失败了:Rails 3 ActiveRecord::Relation random associations behavior
事件.rb
用户.rb
架构.rb
错误信息
activerecord - 如何从 Rails 中的查询中排除 id 数组(使用 ActiveRecord)?
我想执行一个 ActiveRecord 查询,该查询返回除具有特定 ID 的记录之外的所有记录。我想排除的 id 存储在一个数组中。所以:
我不确定如何完成第二行。
背景:我已经尝试过的:
我不确定背景是否必要,但我已经尝试过 .find 和 .where 的各种组合。例如:
这些都失败了。 这个技巧可能在正确的轨道上,但我没有成功地适应它。任何帮助将不胜感激。
ruby-on-rails-3 - 使用 after_create
我有一个模型,类别。我想在创建类别时创建一个新的默认 sub_category 。但我不知道该怎么做。这就是我所拥有的。
ruby-on-rails - 如何让 Rails 急切加载计数?
这与一年前的一个问题和变化有关。
我提出了一个应该开箱即用的问题示例,前提是您有可用的 sqlite3:https ://github.com/cairo140/rails-eager-loading-counts-demo
安装说明(用于主分支)
我在存储库中有更完整的文章,但我的一般问题是这个。
我怎样才能使 Rails 急切加载计数以最大限度地减少全面的数据库查询?
n+1
每当您#count
在关联上使用时,就会出现问题,尽管在 ActiveRelation 中包含了该关联#includes(:associated)
。一种解决方法是使用#length
,但这仅在它被调用的对象已经加载时才有效,更不用说我怀疑它复制了 Rails 内部已经完成的某些事情。此外,使用的一个问题#length
是,当关联开始时没有加载并且计数就是您所需要的时,它会导致不幸的过载。
从自述文件:
我们可以通过在帖子数组上运行#length 来避免这个问题(见附录),它已经加载了,但是如果有随时可用的 count 也是很好的。它不仅更加一致;它提供了不一定需要加载帖子的访问路径。例如,如果您有一个无论如何都显示计数的部分,但有一半的时间是在加载帖子的情况下调用该部分,而一半的时间没有加载,您将面临以下情况:
- 使用
#count
- n
COUNT
已加载帖子时的样式查询- n
COUNT
未加载帖子时的样式查询- 使用
#length
- 帖子已加载时零额外查询
- n
*
未加载帖子时的样式查询在这两种选择之间,没有占优的选择。但是修改 #count 以推迟到 #length 或访问以其他方式存储在幕后的长度会很好,这样我们就可以有以下场景:
- 使用修订版
#count
- 帖子已加载时零额外查询
- n
COUNT
未加载帖子时的样式查询
那么这里的正确方法是什么?有没有我忽略的东西(非常非常有可能)?
ruby-on-rails-3 - 干掉活动记录查询
我有 2 个类似的查询,我怎样才能把它们弄干?两个查询之间只有 1 个条件不同。
ruby-on-rails-3 - Rails3 和 ActiveRecord::Relation - Arel 和 OR
我在一个名为 Events 的模型中定义了一些范围。现在我需要使用 OR 运算符加入他们。我正在使用 Rails3,我对 ActiveRelation & Arel 以及我应该如何以及如何使用它有点困惑
我如何获得事件
当我尝试时Events.for_company(X).or(issues)
出现错误
NoMethodError:#ActiveRecord::Relation 的未定义方法“或”
使用Events.for_company(Company.find(1)).arel.or(Events.issues)
我得到
NoMethodError:#Arel::SelectManager 的未定义方法“或”
我想获取所有问题或用户来自确定公司的事件。
谢谢。
ruby-on-rails-3 - User.where(:id => [1,2]).where(:id => 2).arel.to_sql unexpected result
From rails console, running the following gives an unexpected result:
I'm not expecting that to be an OR
.
This example is a very simplified example of a tableless User
model I have that defines a method:
where Cars
are kept in the database. Then later in a controller
(okay, this is also a simplified example, but much more representative of what I'm trying to accomplish)
ruby-on-rails - 为什么 Rails 3 中缺少 message_id_equals 方法?
我似乎有这个错误,我没有做任何特别的事情:
为什么?这是上下文: