Has_Many :通过 或 :finder_sql

2024-02-16

我已经确定了我想要的东西,但我似乎无法以 Rails 设计师正在寻找的方式得到它。基本上,我有(请搁置复数/等问题):

人类 关系(父母、子女)

我试图获取单亲的所有后代,以及许多后代的单亲(假设每个后代只有一个父母)。

我可以在模型中通过以下方式执行此操作:

has_one     :parent, :through => :relationships, :foreign_key => :human_id, :source => :source_human
has_many    :offsprings, :finder_sql =>
          'SELECT DISTINCT offsprings.* ' +
          'FROM humans offsprings INNER JOIN relationships r on ' +
          'r.human_id = offsprings.id where r.source_human_id = #{id}' 

我必须这样做,因为更好的方法是:

 has_many    :offsprings, :through => :relationships, :foreign_key => :source_human_id, :source => :human

不可能,因为 has_many 中忽略了外键(根据此处的文档:http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-has_many http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-has_many)

但是,现在我收到此错误:

弃用警告:基于字符串 关联插值 条件已被弃用。请使用 相反。所以,举例来说, has_many :older_friends, :条件 => 'age > #{age}' 应更改为 has_many :older_friends, :conditions => proc { “年龄 > #{age}” }. (从 (irb):1 处的 irb_binding 调用)

然而,无论我如何破解这里的 :conditions,似乎 :finder_sql 都不想参与。有什么想法吗?


如果你这样做怎么办

has_many    :offsprings, :finder_sql =>
          proc { "SELECT DISTINCT offsprings.* " +
          "FROM humans offsprings INNER JOIN relationships r on " +
          "r.human_id = offsprings.id where r.source_human_id = #{id}" }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Has_Many :通过 或 :finder_sql 的相关文章

随机推荐

  • Eclipse 中的 ScalaTest 运行配置:找不到 Suite 类

    问题 我无法设置运行配置来为项目中的 Scalatest 运行 scalatest 重现步骤 右键单击 Scala Suite 然后单击 运行方式 gt 运行配置 在左侧 我看到了 ScalaTest 的配置模板 我单击 新建 并填写名称但
  • 如何将分层数据数据绑定到 WPF TreeView?

    该类型如下所示 class Category public string Name public string Message public ObservableCollection
  • 升级到 android sdk tools 20/platform sdk tools 12 后无法再启动应用程序

    我升级了我的 sdk 工具 现在我无法再从 Eclipse 启动应用程序 我仍然可以从命令行安装 当我启动时 我收到一个错误窗口和一个空的设备选择器 错误窗口显示 An error has occurred See error log fo
  • Google 日历 - 找不到请求的活动

    我在 Google 日历中创建了活动 然后将其发布到网站上 作为 Google 日历中的 HTML 代码 活动网址 单击 URL 后 它会将我重定向到 Google 日历 其中包含以下文本 找不到请求的事件 应该是什么问题呢 我希望人们应该
  • 在预排序的 DataFrame 上使用 pandas groupby 进行迭代顺序

    情况 我根据特定列中的值使用特定分类器对 DataFrame 中的行进行分类 我的目标是根据特定条件将结果附加到一个新列或另一列 代码看起来像这样 df pd DataFrame A list with classifier ids Onl
  • Android,ArrayAdapter的add()函数不起作用

    我有一个附加到 AutoCompleteTextView textView 组件的 ArrayAdapter myAdapter 一旦用户按下一个字符 我想用包含该字符的项目填充 AutoCompleteTextView 的下拉列表 我使用
  • 了解汇编中的 JMP 代码

    我最近刚刚触及汇编语言和调试的表面 我有以下代码 Address Hex dump Command Comments 006E3689 E8 C5F9FFFF CALL 006E3053 gt 006E368E E9 DB E9 gt 00
  • 如何更有效地通过 http 下载大文件?

    我正在尝试在 Kotlin 中下载大文件 这个问题 除了我使用 Kotlin 而不是 java 语法略有不同 val client OkHttpClient val request Request Builder url urlString
  • 什么是 JavaScript >>> 运算符以及如何使用它?

    我正在查看 Mozilla 中向 Array 添加过滤方法的代码 其中有一行代码让我感到困惑 var len this length gt gt gt 0 我以前从未见过在 JavaScript 中使用 gt gt gt 它是什么以及它有什
  • Pgadmin4 中的“加密密钥丢失”错误是什么以及如何解决?

    我正在使用 pgadmin 版本 6 1 我正在尝试使用本地计算机上的 pgadmin 连接到托管在 docker 中的 postgres 数据库 我使用以下命令来获取 docker 容器的 IP 地址 docker检查 f range N
  • iOS 中如何将地图区域限制为一个国家/地区?

    我正在使用mapkit 为iOS 制作一个应用程序 我想将地图的边界限制为特定的地区 国家 有没有办法做到这一点 无法告诉地图不要滚动到某个区域之外 我能想到的唯一方法是当您撞到栅栏之一时阻止用户滚动 下面的示例是在没有测试或编译的情况下编
  • WP7 模拟器浏览器不显示任何内容

    我使用 webbrowser 控件显示应用程序中的网页 但它只显示白屏 我尝试了 Internet Explorer 但它也没有显示任何内容 任何想法如何解决这个问题 预先非常感谢 Windows Phone 模拟器需要具有 DirectX
  • 如何使用OpenCV中的convertScaleAbs()函数?

    我试图在应用索贝尔过滤后将图像转换回灰度 我有以下代码 import numpy as np import matplotlib pyplot as plt import cv2 image cv2 imread train jpg img
  • 出于安全原因,escapeshellarg() 已被禁用

    当我想以任何形式上传任何内容时 我会看到警告 出于安全原因 escapeshellarg 已被禁用在我的网站上留言 我可以做什么来解决这个问题 我的框架是 codeigniter 最终版本 这是完整的警告 A PHP Error was e
  • 垂直可滚动组件的测量具有无限大的最大高度限制,这是不允许的

    我在 recyclerview 项目布局中使用 ComposeView 来与 jetpack compose 一起使用 当我打开屏幕时遇到奇怪的问题 Error java lang IllegalStateException Vertica
  • 选择元素上的 IE6/IE7 css 边框

    有谁有使用 CSS 来设置 Internet Explorer 中 选择 元素边框样式的解决方案吗 据我所知 这在 IE 中是不可能的 因为它使用操作系统组件 这里有一个link http v2 easy designs net artic
  • mysql错误1451

    我有 mysql 错误 代码为 1451 无法删除或更新父行 外键约束失败 online store admin osa admin logs 约束fk admins logs外键 aid 参考osa admins aid 这里sql语句
  • Log4J – 运行时变量替换

    Log4J http logging apache org log4j 1 2 index html似乎有一个恼人的限制 在运行时 变量替换似乎不起作用 在这个例子中 文件 Log4j properties file pattern d I
  • 终止应用程序未捕获的异常“NSInvalidArgumentException”

    我在控制台中收到以下错误 终止应用程序未捕获的异常 NSInvalidArgumentException 原因 NSPlaceholderDictionary initWithObjects forKeys count 尝试从对象插入nil
  • Has_Many :通过 或 :finder_sql

    我已经确定了我想要的东西 但我似乎无法以 Rails 设计师正在寻找的方式得到它 基本上 我有 请搁置复数 等问题 人类 关系 父母 子女 我试图获取单亲的所有后代 以及许多后代的单亲 假设每个后代只有一个父母 我可以在模型中通过以下方式执