ActiveRecord has_many 其中表 A 中的两列是表 B 中的主键

2024-01-17

我有一个模型,Couple,有两列,first_person_id and second_person_id和另一个模型,Person,其主键是person_id并有专栏name

这是我想要的用法:

#including 'Person' model for eager loading, this is crucial for me
c = Couple.find(:all, :include => :persons)[0]
puts "#{c.first_person.name} and #{c.second_person.name}"

那么我该怎么做呢?


中声明的关系Couple应该看起来像这样:

class Couple
  named_scope :with_people, { :include => [:first_person, :second_person] }
  belongs_to :first_person, :class_name => 'Person'
  belongs_to :second_person, :class_name => 'Person'
end

#usage:
Couple.with_people.first
# => <Couple ... @first_person: <Person ...>, @second_person: <Person ...>>

那些在Person取决于是否Person可以是多个的一部分Couple. If a Person只能属于一个Couple并且不能成为“第一”Person上一和Second另一方面,您可能想要:

class Person
  has_one :couple_as_first_person, :foreign_key => 'first_person_id', :class_name => 'Couple'
  has_one :couple_as_second_person, :foreign_key => 'second_person_id', :class_name => 'Couple'

  def couple
    couple_as_first_person || couple_as_second_person
  end
end

If a Person可以属于多个Couples,并且无法判断它们是任何给定中的“第一”还是“第二”Couple, 你可能想要:

class Person
  has_many :couples_as_first_person, :foreign_key => 'first_person_id', :class_name => 'Couple'
  has_many :couples_as_second_person, :foreign_key => 'second_person_id', :class_name => 'Couple'

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

ActiveRecord has_many 其中表 A 中的两列是表 B 中的主键 的相关文章

  • 从 url 导入 CSV Errno::ENAMETOOLONG: 文件名太长

    我正在尝试从 url 导入 CSV 文件 但我得到了Errno ENAMETOOLONG file name too long 我按如下方式处理该文件 require open uri url http de65 grepolis com
  • 转储 YAML 时如何强制使用双引号?

    我有一个小脚本来自动化 YAML 文件中的一些操作 我读取原始 YAML 文件并将其转换为哈希 然后dump http ruby doc org stdlib 1 8 6 libdoc yaml rdoc YAML html method
  • 从 Ruby 中的 DateTime 变量获取时间

    我在 ruby 中工作 我有一个包含数据库中今天的日期时间的对象 我只想要时间截断数据 我怎样才能得到那个 Try 日期时间 strftime http www ruby doc org stdlib 1 9 3 libdoc date r
  • 可以覆盖/实现的 ruby​​ 运算符列表

    是否有可以覆盖的所有 ruby 运算符的列表 不是那些不能的 Here s Ruby 运算符表 http phrogz net programmingruby language html table 18 4 方法和可重载的有 Elemen
  • 在私有控制器方法中返回redirect_to

    前言 我正在使用设备进行身份验证 我试图阻止未经授权的用户查看 编辑或更新其他用户的信息 我最关心的是用户将 DOM 中的表单修改为另一个用户的 ID 填写表单 然后单击更新 我已经专门阅读过 像下面这样的东西应该有效 但事实并非如此 SO
  • Rails Active Admin css 与 Twitter Bootstrap css 冲突

    我对 Rails 资产管道有点陌生 所以我可能做错了什么 我正在尝试为我的后端使用 Active Admin 为我的前端应用程序使用 twitter bootstrap css 我将 bootstrap css 添加到 应用程序 资产 样式
  • Watir 更改 Mozilla Firefox 首选项

    我正在使用 Watir 运行 Ruby 脚本来自动执行一些操作 我正在尝试自动将一些文件保存到某个目录 因此 在我的 Mozilla 设置中 我将默认下载目录设置为桌面并选择自动保存文件 然而 当我开始运行脚本时 这些更改并未反映出来 似乎
  • 创建一个简单的 Rails 3 文本助手 Gem [重复]

    这个问题在这里已经有答案了 我一直在开发我的第一个 Rails 3 插件 以打包一个我喜欢在ApplicationHelper我所有的应用程序 你可以看到整个代码在 Github 上 https github com burlesona s
  • 将 Rails 变量传递给液体可以在控制台中工作,但不在视图中

    我想将哈希传递给渲染方法 当我这样做时 在我的控制台中一切正常 object Object find params id hash object object to liquid template Liquid Template parse
  • Ruby on Rails REST 设计问题 - 在账户之间转账

    我有一个 Account 类 想要实现转账屏幕以允许用户在 2 个账户之间转账 我将如何实现这种 RESTful 方式 我有标准帐户和休息操作 那很好 但我该如何实现转移呢 通常我只会向帐户控制器和相应的视图添加一个名为 transfer
  • Rubymine 6 更新/刷新 Rails 项目中可用的方法和路径?

    这是一个例子 假设我更新路线resources foo这给我带来了一些新的道路 例如 new foo session当我开始在 ERB 视图中输入路径时 我希望它向我显示 建议自动完成与路径匹配的名称 当我输入 new foo 我会得到所有
  • 如何从 Rails 中的 date_select 或 select_date 获取日期?

    Using select date给我回一个params my date with year month and day属性 如何轻松获取 Date 对象 我希望有类似的事情params my date to date 我很高兴使用date
  • Ruby 中的任务/未来

    代表潜在延迟的异步计算并且可以订阅其完成的模式的惯用 Ruby 模拟是什么 即类似于 NET 的东西System Threading Task 或Python 3 xconcurrent futures future 请注意 这并不一定意味
  • Heroku 部署错误

    在 Windows 环境中 尝试部署到 Heroku 时出现以下错误 C Ruby lib ruby gems 1 8 gems heroku 1 9 13 lib heroku commands base rb 32 in 没有这样的文件
  • ruby 中的 #encode 和 #force_encoding 有什么区别?

    我真的不明白之间的区别 encode and force encoding在 Ruby 中String班级 我明白那个 kam force encoding UTF 8 将迫使 kam 是UTF 8编码 但是怎么样 encode encod
  • 使用 VCR 过滤敏感数据

    我正在使用 VCR gem 记录 http 交互并在将来重播它们 我想过滤掉 uri 请求中的实际密码值 以下是 uri 的示例 http services somesite com Services asmx Cabins Usernam
  • 多重要求和允许强参数rails 4

    在下面的情况下 我尝试使用强参数 我想要求email address password并允许remember me fields 但像下面这样使用它只允许最后一行在方法示例中 在下面的情况下 它只需要params permit rememb
  • (Rails) Assert_Select 的烦人警告

    有谁知道如何让assert select在rake测试期间不输出所有那些讨厌的html警告 你知道 就像这样的东西 ignoring attempt to close body with div opened at byte 1036 li
  • 使用 Ruby aws-sdk 跟踪文件到 S3 的上传进度

    首先 我知道SO中有很多与此类似的问题 在过去的一周里 我读了大部分 如果不是全部 但我仍然无法让这项工作为我工作 我正在开发一个 Ruby on Rails 应用程序 允许用户将 mp3 文件上传到 Amazon S3 上传本身工作正常
  • 即使在急切加载之后,belongs_to 关联也会单独加载

    我有以下关联 class Picture lt ActiveRecord Base belongs to user end class User lt ActiveRecord Base has many pictures end 在我的

随机推荐

  • React Router 传递参数。如何?

    具有以下 React Router const AppRoutes
  • Autofac 已下载,我可以访问构建器方法,但不能访问 RegisterControllers 方法

    下面的代码是我到目前为止所拥有的 RegisterControllers 方法不存在 尽管我可以在 autofac 文档以及其他堆栈溢出问题上看到它 Visual Studio 一直说 ContainerBuilder 不包含 Regist
  • 使用 TypeFamilies 派生实例

    我有一个类型类Foo具有关联类型 LANGUAGE TypeFamilies class Foo a where type Bar a foo a gt Bar a 现在我想定义一个包含关联类型之一的数据类型 并派生一个Show它的实例 d
  • HTML与大虾

    我尝试使用 prawn 生成日志条目的 PDF 然后条目存储在 bbcode b bold b 等 中并转换为 html 显示 大虾有什么办法可以显示html吗 这听起来像虾格式 http github com sandal prawn f
  • WordPress 页面重定向到主页

    我有一个 WordPress 网站http www wjewel com http www wjewel com 网站的所有页面都被重定向到主页 没有用于重定向的 htaccess 文件或 web config 文件 有人可以指导我这个问题
  • 如何重复更新android TextView来模拟动画

    我希望一旦按下菜单中的按钮 TextView 中的文本就会不断变化 这是我的菜单的 onOptionsItemSelected public boolean onOptionsItemSelected MenuItem item switc
  • pip3安装pyautogui,错误代码1

    我无法安装 pyautogui 我已经尝试了一切 例如 pip3 install pillow 也按照网站上的步骤操作pyautogui 网站 http pyautogui readthedocs io en latest install
  • 配置 Redis 以与 AppHarbor 良好配合

    我使用 AppHarbor 作为 CI 环境来验证我的提交 我在 AppHarbor 中收到错误 因为 Redis 无法写入磁盘 Error RedisResponseException MISCONF Redis is configure
  • Adobe AIR 键盘挂钩

    我正在尝试向我的 AIR 应用程序添加一项功能 即使应用程序最小化 该功能也可以侦听 可配置的 全局键盘事件 例如 CTRL ALT SHIFT F12 抓取屏幕截图 我找不到任何方法来注册键盘挂钩 并且监听键盘事件仅在应用程序具有焦点时捕
  • 如何防止 iframe 页面被插入 IE 浏览历史记录中

    我在将 iframe 页面插入 IE9 的浏览历史记录时遇到很多麻烦 这很痛苦 因为您必须多次单击后退才能到达上一页 这是什么原因呢 是浏览器的bug还是页面的bug 编辑 我意识到我正在使用 javascript 来更新页面上所有 ifr
  • C++ Map 使用非默认构造函数初始化对象

    在 C 中 假设我有一个无序映射定义如下 unordered map
  • Process.Start() 明显慢于在控制台中执行

    我使用以下命令执行 exe 时遇到性能问题Process Start NET 的执行时间大约是控制台的 5 倍 什么会导致这种情况 这是一个测试程序 public static void Main string argv for int i
  • 如何将事件对象传递给命名函数

    我有一个用于单击事件的事件处理程序 事件处理程序是一个命名函数而不是匿名函数 如何将事件对象传递给这个命名函数 usual example sel click function ev do stuff which involves the
  • notifyDataSetChanged 不会刷新 RecyclerView

    我有一个奇怪的问题 我切换到RecyclerView from ListView我无法刷新或通知我的更改ListView 我尝试打电话Item this notifyDataSetChanged 以及其他刷新方法View但它不起作用 反而R
  • setImeOptions:为什么软键盘上不显示“完成”按钮?

    我尝试使用以下命令在软键盘上设置 完成 按钮input setImeOptions EditorInfo IME ACTION DONE 但 完成 按钮根本不显示在软键盘上 请问有什么建议吗 public void modif int po
  • 切换弹出窗口并在外部单击时切换它

    我有一个问题 我正在尝试制作一个弹出窗口切换toggleClass 不过 我还制定了一条从 StackOverflow 获得的规则 当在外部单击时 弹出窗口会消失 但是 当我单击登录按钮时 它会出现 但我无法再使用登录按钮使其消失 但我已经
  • 2D OpenGL 场景因大量重叠形状而变慢

    我正在使用 OpenGL 绘制 2D 形状 他们没有使用那么多多边形 我注意到我可以有很多很多的形状 只要它们不重叠 如果我在一个形状后面得到一个形状 等等 它真的开始滞后 我觉得我可能做错了什么 这是正常的吗 有没有办法解决这个问题 我不
  • 猫效应和异步 IO 细节

    这几天我一直在思考猫效应和 IO 我觉得我对这种效果有一些误解 或者只是我错过了它的要点 首先 如果IO可以取代Scala的Future 我们如何创建异步IO任务 使用IO shift Using IO async Is IO delay同
  • 将 pandas 中的多列除以另一列

    我需要将 DataFrame 中除第一列以外的所有列除以第一列 这就是我正在做的事情 但我想知道这是否不是 正确的 熊猫方式 df pd DataFrame np random rand 10 3 columns list ABC df B
  • ActiveRecord has_many 其中表 A 中的两列是表 B 中的主键

    我有一个模型 Couple 有两列 first person id and second person id和另一个模型 Person 其主键是person id并有专栏name 这是我想要的用法 including Person mode