问题标签 [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.

0 投票
3 回答
3801 浏览

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 查询来指定生成的关联模型对象?

前任:

0 投票
1 回答
79 浏览

ruby-on-rails - (NULL) 中的 NULL 不正确匹配

使用 Rails 3 主动关系,我有一个范围:

这在 :email 为 NULL 时会出现问题。它返回零行,而实际上它应该返回至少 1 行,即duplicate_contact(contact).size == 0 当它应该为假时为真。

我认为这与 mysql 文档中的这种说法有关:“在 SQL 中,与任何其他值相比,NULL 值永远不会为真,即使是 NULL。”

我怎样才能让它返回正确的结果?

0 投票
2 回答
16839 浏览

ruby-on-rails - rails 3.0.3 - ActiveRecord::Relation,未定义的方法错误

我有这个无法解释的 ActiveRecord::Relation, undefined method error 。我不知道为什么,因为我的模型关联定义明确并且事件表具有用户表的外键。我尝试使用此修复程序,但失败了:Rails 3 ActiveRecord::Relation random associations behavior

事件.rb

用户.rb

架构.rb

错误信息

0 投票
4 回答
22590 浏览

activerecord - 如何从 Rails 中的查询中排除 id 数组(使用 ActiveRecord)?

我想执行一个 ActiveRecord 查询,该查询返回除具有特定 ID 的记录之外的所有记录。我想排除的 id 存储在一个数组中。所以:

我不确定如何完成第二行。

背景:我已经尝试过的:

我不确定背景是否必要,但我已经尝试过 .find 和 .where 的各种组合。例如:

这些都失败了。 这个技巧可能在正确的轨道上,但我没有成功地适应它。任何帮助将不胜感激。

0 投票
1 回答
2193 浏览

ruby-on-rails-3 - 使用 after_create

我有一个模型,类别。我想在创建类别时创建一个新的默认 sub_category 。但我不知道该怎么做。这就是我所拥有的。

0 投票
4 回答
6823 浏览

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
    • nCOUNT已加载帖子时的样式查询
    • nCOUNT未加载帖子时的样式查询
  • 使用#length
    • 帖子已加载时零额外查询
    • n*未加载帖子时的样式查询

在这两种选择之间,没有占优的选择。但是修改 #count 以推迟到 #length 或访问以其他方式存储在幕后的长度会很好,这样我们就可以有以下场景:

  • 使用修订版#count
    • 帖子已加载时零额外查询
    • nCOUNT未加载帖子时的样式查询

那么这里的正确方法是什么?有没有我忽略的东西(非常非常有可能)?

0 投票
1 回答
78 浏览

ruby-on-rails-3 - 干掉活动记录查询

我有 2 个类似的查询,我怎样才能把它们弄干?两个查询之间只有 1 个条件不同。

0 投票
2 回答
6332 浏览

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 的未定义方法“或”

我想获取所有问题或用户来自确定公司的事件。

谢谢。

0 投票
1 回答
3412 浏览

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)

0 投票
1 回答
127 浏览

ruby-on-rails - 为什么 Rails 3 中缺少 message_id_equals 方法?

我似乎有这个错误,我没有做任何特别的事情:

为什么?这是上下文: