急切加载“二级”关联对象时出现问题

2023-12-04

我正在运行 Ruby on Rails 3.1。我想通过应用一些条件来加载“二级”关联对象,但我遇到了麻烦。

看来我已经解决了我的问题的一部分通过使用:

article_categories =
  article
    .categories
    .includes(:comments => [:category_relationships])
    .where(:category_relationships => {:user_id => @current_user.id})

其中涉及的类说明如下:

class Category < ActiveRecord::Base
  has_many :comment_relationships
  has_many :comments,
    :through => :comment_relationships

  ...
end

class Comment < ActiveRecord::Base
  has_many :category_relationships
  has_many :categories,
    :through => :category_relationships

  ...
end

上面的代码(看起来是正确的):

  1. 加载全部categories通过关心has_many :through :category_relationships协会(即通过关心.where(:category_relationships => {:user_id => @current_user.id})健康)状况);
  2. 急切加载所有article.comments.where(:user_id => @current_user.id).

不过,我还想多说一些:

  1. to order检索到的categories by a :position属性存在于category_relationships使得由此产生的article_categories are 按位置排序;
  2. to 急切加载 also category_relationship物体在哪里user_id == @current_user.id因为上面的代码没有做到这一点。

我如何利用急切加载来实现这一点?


解决方案:

  1. .order("category_relationships.position")

  2. 想象一下急切加载是带有一些过滤的笛卡尔积,因此“where”正在过滤包含的最终结果(实际上是左连接)。但这可以用where使用子查询,首先将按用户过滤类别,然后可以删除您的位置。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

急切加载“二级”关联对象时出现问题 的相关文章

随机推荐

  • 分析 boost::uuid 的 Valgrind 日志

    我使用 boost uuid 来生成唯一的 id string UUid boost uuids uuid uuid boost uuids random generator return boost lexical cast
  • 获取R向量中所有最大值索引

    假设我们在 R 中有一个向量 v lt 2 3 4 5 5 5 我们可以使用 max 函数轻松找到向量的最大值 max v 我们怎样才能找到出现最大值的所有索引 有一个函数 which max v 只返回第一个索引 有没有一种简单的方法来获
  • 奇怪的诊断错误,预定义类型系统...未定义或导入

    我在解析非常基本的 NET 4 6 应用程序时遇到 Roslyn 诊断错误 解决方案文件可以从那里下载https github com dotnet roslyn files 2393288 DemoSolution zip 依赖树如下所示
  • 将用户添加到本地组

    此函数应在 Windows Server 2003 和 2008 R2 上运行 使用命令行逐行执行就成功了 脚本执行失败 function addUser2Group string user string group cname gc en
  • python3打印unicode到windows xp控制台编码cp437

    好的 我想在 Windows XP 控制台中打印一个字符串 控制台无法打印几个字符 因此我必须编码为我的 stdout encoding 即 cp437 但打印编码字符串时 被打印为 xe1 解码回 unicode 并打印字符串后 我得到了
  • 如何在ajax请求中包含标头?

    我需要在对 YouTube api 的 ajax 调用中包含带有刷新令牌的标头 我正在尝试发送删除请求 以删除我帐户中的电影 这是我的 ajax 调用 单击按钮时触发 jQuery ajax type DELETE must set api
  • 如何选择datagridview任何列的最大值和最小值

    我的 Windows 窗体上有一个 datagridview 控件 现在我需要选择列的最大值和最小值 在数据表中我们可以使用这个来做到这一点 Code int maxID curriculmDataTable AsEnumerable Ma
  • 删除的.git可以恢复吗?

    在 Ruby on Rails 上使用 git 时会发生这种情况 完成并创建了一些提交和分支 git version 1 7 3 4 我不小心删除了 git 文件夹 using git rf git 但我已经在在线 git hub 存储库上
  • 使用包名称导入会破坏 Python 中的枚举比较

    我和我的朋友正在用 Python 制作国际象棋人工智能 但我们遇到了一个关于枚举的神秘问题 我们将片段类型编码在枚举中 如下所示 片 py from enum import Enum class PieceType Enum type on
  • 与 constrOptim 中的简单约束作斗争

    我在 R 中有一个函数 我希望在一些简单的约束下最大化它optim or constrOptim 但我正在努力让自己清醒过来ci and ui以满足我的限制 我的职能是 negexpKPI lt function alpha beta sp
  • Java中<>里面的数据类型有什么作用? [复制]

    这个问题在这里已经有答案了 可能的重复 Java 泛型 更具体地说 它的作用是什么在下面的代码行中 private List
  • 不要在 android 9 pie 上使用代理

    我刚刚将我的三星 Note 8 手机升级到 Android OS 9 0 当我进入高级 wifi 设置时 我选择手动使用代理模式 主机 192 168 1 8 端口 8888 在电脑上我打开Fiddler软件来抓包 但是 我无法捕获从手机发
  • org.springframework.web.util.NestedServletException:请求处理失败

    我正在使用 spring jdbc 模板进行 CRUD 插入 选择和删除操作工作正常 但我在更新过程中遇到以下异常 org springframework web util NestedServletException Request pr
  • iOS:如果应用程序未打开,苹果通用链接?

    如果应用程序已经打开 后台 我的应用程序可以成功处理苹果通用链接 但是 如果应用程序尚未打开 那么当我点击邮件中的此类链接时 应用程序将打开 但我永远不会收到 application continueUserActivity 的回调 如果应
  • 使用自定义按钮控制 Soundcloud HTML5 Widget 播放器

    我想做一些类似于我在 SoundClouds HTML5 Widget API PLayground 页面上看到的内容 其中有控制播放器的外部按钮 http w soundcloud com player api playground ht
  • Python - 使用 Numpy、ValueError 生成随机 DNA 序列

    有两个问题我想问任何熟悉 numpy 的人 我见过非常类似的问题 和答案 但没有一个使用我想使用的 numpy 因为它提供了很多我将来可能想在该代码中使用的其他选项 我尝试使用Python中的 随机 生成随机核苷酸序列列表 因为我想要非均匀
  • 动画滚动顶部延迟仅在 Chrome 上

    Bootstrap 5 1 3 和 jQuery 3 6 0 在 Chrome 上点击后动画不会立即启动 但在其他浏览器上可以正常运行 有时动画会在单击后一段时间 可能是 500 毫秒 后开始 有时会以较慢的速度开始 然后正常 我尝试了下面
  • Mono 返回错误:未找到 mono mscorlib.dll

    我用 monodevelop 2 4 开发了一个 mono gtk 2 10 应用程序 但是 当我尝试在我的开发机器 大约 5 个虚拟机 之外启动 exe 时 我得到 找不到单声道 mscorlib dll 另外 如果我将 mscorlib
  • 我需要迭代文本文件并打印 python 3 中从满足条件开始到结束的特定文本

    txt 文件示例 vrf X x X hello how are you vrf y y y hi 我想运行上面提供的文本并打印从匹配字符串 开始的输出 vrf 直到匹配字符串 根据上面的文字 我应该得到输出为 vrf X x X hell
  • 急切加载“二级”关联对象时出现问题

    我正在运行 Ruby on Rails 3 1 我想通过应用一些条件来加载 二级 关联对象 但我遇到了麻烦 看来我已经解决了我的问题的一部分通过使用 article categories article categories include