Mongoid - 同一外域的两个域的逆

2024-05-14

我试图让以下 Mongoid 关系发挥作用,但每个团队的游戏字段都是一个空数组。这不是一个有效的关系模型吗?我是否需要分开比赛,即主场比赛和客场比赛?

class Team
  include Mongoid::Document

  has_many :games, :autosave => true

end

class Game
  include Mongoid::Document

  belongs_to :home_team, :class_name => "Team", :inverse_of => :games
  belongs_to :away_team, :class_name => "Team", :inverse_of => :games

end

我不认为有直接的方法可以做到这一点,也许你可以通过以下方法解决

class Team
  include Mongoid::Document

  has_many :home_played, :class_name => 'Game' , :inverse_of => :home_team
  has_many :away_played, :class_name => 'Game' , :inverse_of => :away_team


 def games
    Game.any_of({:home_team_id => self.id},{:away_team_id => self.id})
 end

end

class Game
  include Mongoid::Document

  belongs_to :home_team, :class_name => "Team", :inverse_of => :home_played
  belongs_to :away_team, :class_name => "Team", :inverse_of => :away_played

end

所以现在你可以像这样使用它

g = Game.new
+--------------------------+-------+--------------------------+--------------+--------------+
| _id                      | _type | _id                      | home_team_id | away_team_id |
+--------------------------+-------+--------------------------+--------------+--------------+
| 4ec76f70b356f8031f000001 |       | 4ec76f70b356f8031f000001 |              |              |
+--------------------------+-------+--------------------------+--------------+--------------+
1 row in set
>> t=Team.new
+--------------------------+-------+--------------------------+
| _id                      | _type | _id                      |
+--------------------------+-------+--------------------------+
| 4ec76f75b356f8031f000002 |       | 4ec76f75b356f8031f000002 |
+--------------------------+-------+--------------------------+
1 row in set
>> t.save
=> true
g.home_team = t
+--------------------------+-------+--------------------------+
| _id                      | _type | _id                      |
+--------------------------+-------+--------------------------+
| 4ec76f75b356f8031f000002 |       | 4ec76f75b356f8031f000002 |
+--------------------------+-------+--------------------------+
1 row in set
>> g.save
=> true

and

>> Team.first.home_played
+--------------------------+-------+--------------------------+--------------------------+--------------+
| _id                      | _type | _id                      | home_team_id             | away_team_id |
+--------------------------+-------+--------------------------+--------------------------+--------------+
| 4ec76f70b356f8031f000001 |       | 4ec76f70b356f8031f000001 | 4ec76f75b356f8031f000002 |              |
+--------------------------+-------+--------------------------+--------------------------+--------------+
1 row in set
>> Game.first.home_team
+--------------------------+-------+--------------------------+
| _id                      | _type | _id                      |
+--------------------------+-------+--------------------------+
| 4ec76f75b356f8031f000002 |       | 4ec76f75b356f8031f000002 |
+--------------------------+-------+--------------------------+

abd 你可以得到总计数

>> Team.first.games

希望这可以帮助

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

Mongoid - 同一外域的两个域的逆 的相关文章

  • 使用 slim 或 haml 在独立(非 Rails)Ruby 应用程序中指定布局和模板

    我正在尝试在独立 不是 Rails 应用程序中执行类似的操作 布局 slim h1 Hello content yield 显示 苗条 object name object description 我不知道如何指定布局和模板 slim 或h
  • Ruby on Rails 基本概念总结

    作为 Rails 的新手 我很难找到提供 Ruby on Rails 概要的网站或参考资料 我对 MVC ActiveRecord 以及诸如此类的东西有基本的了解 但我很难理解其中的一些关系和基础知识 例如 我需要注意哪些命名约定 控制器操
  • ActiveRecord::Fixture::FixtureError:表“books”没有名为“loves”的列

    奇怪的 Rails 问题 我有一个Book实体和用户可以Love a book 我的所有其他模型都很好并且通过了所有测试 但是在生成新模型之后Love模型和设置装置时 我突然遇到大量这些错误 ActiveRecord Fixture Fix
  • Ruby 解释器嵌入到 C 代码中

    我只是尝试书中的一个简单例子 我有一个 sum rb 文件 class Summer def sum max raise Invalid maximum max if max lt 0 max max max 2 end end 还有一个
  • 使用ruby中的sequel fetch函数在双引号内转义单引号

    使用原始 SQL 当我使用后续的 fetch 函数在查询中使用 IN 语句时 我无法通过编写 where stuff IN 来转义单引号 values stuff1 stuff2 db fetch query where IN values
  • Rails Resque 作业无法访问数据库,I/O 错误

    我遇到错误 无法找到任何相关信息 这是一个 Ruby on Rails 堆栈 Ruby 1 9 Rails 3 2 并使用 sqlite3 数据库进行开发 Resque 和 Redis 用于后台作业 Rails Web 应用程序启动正常 可
  • 如何将文本数据从 ruby​​ 控制台传递到剪贴板而不保存到文件?

    我试图将我创建的全局变量中包含的数组传递到我的 mac 上的剪贴板中 它很长 所以我不想在控制台上突出显示 复制和粘贴 我想使用嵌入式unix代码 特别是pbcopyMac 笔记本电脑控制台的功能 允许我将文本传递到我的计算机剪贴板中 准备
  • 如何在 Rails 中重定向到 404?

    我想在 Rails 中 伪造 404 页面 在 PHP 中 我只发送一个带有错误代码的标头 如下所示 header HTTP 1 0 404 Not Found Rails 是如何做到这一点的 不要自己渲染 404 没有理由这样做 Rail
  • Rails3,从 cron 运行 rake 任务

    我从 cron 运行 rake 任务时遇到问题 我将其包装在 shell 文件中 当我从控制台执行此 shell 文件时 它工作正常 bin sh if ps ef grep v grep grep create all accounts
  • Rspec 通过 mTurk 测试实时结果

    我正在通过 Rspec 测试代码在 mTurk 上创建点击 但同时我需要测试必须从 mTurk 发回的结果 为了节省每次测试的复杂性 我使用 VCR 将 HTTP 请求记录在盒式磁带中 我该如何实施这个测试 好吧 我为此做了一些修改 我使用
  • 我可以在同一台 Apache 服务器上运行 Python Django 和 Ruby 吗?

    我正在使用 ModWSGI 在 Apache2 上运行 Python Django 并且我想在同一台服务器上运行 Ruby on Rails 可以这样做吗 我读到 Passenger for Ruby on Rails 也可以支持 Djan
  • 在 Rails 中实现友谊模型的最佳方式

    我想在我的应用程序中实现用户的朋友系统 所以我发现 Rails 空间解决方案非常好 其想法是创建两行 in the Friendships table 第一行为发送者邀请 第二行为接收者 用户之间的关系设置为has many像这样的协会 h
  • 需要帮助设置 ruby​​ on Rails javascript 运行时环境

    我在我的机器上设置 ruby on Rails 时遇到问题 我一直在关注 Agile Web Development with Rails 这本书 到目前为止一切都进展顺利 我遇到的问题是当我输入时 rails server 我收到以下错误
  • ruby 正则表达式扫描与 =~

    Ruby 1 9 3 文档似乎暗示 scan 等同于 除了 scan 返回多个匹配项 而 仅返回第一个匹配项 并且 scan 返回匹配数据 而 返回索引 但是 在下面的示例中 这两种方法似乎对相同的字符串和表达式返回不同的结果 这是为什么
  • Rails 中多表单复选框的数据库结构

    我正在开发一个 Rails 应用程序 允许用户创建时间表 这样做时 他们应该能够选择事件发生在一周中的哪几天 我计划在表单中执行此操作的方式是每个工作日旁边有一个复选框 如下所示 etc 然而 我发现这可能不是处理这个问题的非常有效的方法
  • Ruby on Rails 是否会使来自外部域的 Graphql 控制器中的会话无效?

    我有一个在不同域上运行的 Rails graphql 服务 但会话变量似乎在graphql controller rb为零 当我在本地运行服务时 会话和上下文按预期工作 这是一个例子 in graphql controller def ex
  • 如何在 Ruby 中访问私有类方法?

    给定一个 Ruby 类 class MyClass def self my class method puts class method end private def my method puts regular method end p
  • Rails3-jquery-autocomplete 如果没有可用数据则清除字段

    我正在使用rails3 jquery autocomplete 如果自动完成没有返回结果 是否可以清除自动完成字段的值 我试图阻止用户提交数据库中没有的值 我使用的是旧版本 但我实现了change处理程序autocomplete call
  • 设计:手动加密密码并直接存储

    我正在尝试从旧数据库迁移大量用户 为此 我使用 activerecord import 并尝试将所有用户数据直接保存到数据库 绕过用户模型 我的问题 我需要获取旧用户的纯文本密码 对其进行加密 然后直接存储到数据库中 我知道怎么做gener
  • 使用 Squeal 时可以有条件地在 where 块中添加子句吗?

    首先 我使用 Rails v3 2 9 和 Squeel 1 0 13 这就是我想要做的 我想使用三项身份信息中的任何一项来搜索客户 姓名 出生日期 dob 和社会保险号码 sin 结果集必须包括具有任何标识符 条件的 OR 的任何记录 我

随机推荐

  • 如何在php中正确显示另一种语言的mysql表数据

    我有一个 mySQL 表 其中一列中的数据采用英语以外的语言 波斯语 当我在表中输入数据时 它会正确显示 但是当我想在 php 文件中显示数据时 它会显示如下 好吧 我应该怎么做才能以正确的形式显示数据 由于我经常使用 非英语 字符 因此要
  • StreamBlock StreamField 中的 content_panels

    我定义了一些自定义 StreamField 块 我希望该选项能够折叠自定义块中的某些属性 就像我可以使用 content panels 对标准页面模型所做的那样 但我不认为这是受支持的 正确的 如果不为管理页面编写一些自定义 css js
  • C++ POD 类型有 RTTI 吗?

    据我了解RTTI是如何在各种C 编译器 例如GCC 中实现的 指向type info数据存储在vtable各班级的数据 也正如提到的here https stackoverflow com questions 1963926 when is
  • 如何实现 JsDoc 多重继承或 mixins?

    如何记录 mixin 或多重继承 class Parent function Parent Parent prototype parentTest 5 class Mixin function Mixin Mixin prototype m
  • 有关 window.history.pushState 的帮助

    我需要语法方面的帮助 我的网站使用 AJAX 在 board div 中加载博客文章 然后单击 close 将其关闭 当我加载帖子时 网址变成这样http www visualise ca anne au cherry http www v
  • Flutter Firebase 身份验证 currentUser() 返回 null

    这是关于 Flutter Firebase 身份验证插件的 我试图在创建新用户后发送验证电子邮件 但 sendEmailVerification 内部使用 currentUser 这对我来说似乎是一个错误 但为了以防万一 我在 stacko
  • jQuery beforeunload 自定义弹出窗口用于离开页面

    您好 我想自定义离开页面的弹出窗口 有什么简单的方法可以做到这一点吗 我正在使用简单的 jQuery document ready function var myPopUp pop up css display block window b
  • 在 Java 中实现 Mixin? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 使用Java 6 我如何实现mixin https en wikipedia org wiki Mixin 在 Ruby 中这非常简单
  • 如何在 Metro Windows 8 中查找应用栏的图标? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 如何在 Metro Windows 8 中查找应用栏的图标 我如何添加自定义图标 默认的应用程序栏样式使用 Segoe UI Symbol 字体作为其
  • 如何将模糊屏幕设置为整页并在点击页面时转到顶部

    CSS1 有效 parentDisable z index 2000 width 100 height 100 display none position absolute left 0 background url images btra
  • 用于 Kotlin 中单元测试的 BuildConfigField 模拟

    我正在尝试尽可能多地涵盖Kotlin Android 库我遇到了有关自定义 BuildConfig 变量的问题 更广为人知的是buildConfigField 我想模拟这个变量来测试两者true and false values 从 Gra
  • python + selenium webdriver:使用身份验证方法

    我正在使用 python selenium webdriver 来自动化检查 我被困在通过弹出窗口请求 http 身份验证的网站上 我试图通过以下代码使用 身份验证 方法 init driver webdriver Firefox driv
  • 如何制作像 Google+ 应用程序中那样的气泡? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 有谁知道如何使用 Google An
  • 如何将 HTML 表格导出为 .xlsx 文件

    我有一个关于导出的问题HTML表格 as an xlsx文件 我做了一些工作 现在我可以将其导出为xls 但我需要将其导出为xlsx 这是我的 jsFiddle https jsfiddle net 272406sv 1 https jsf
  • C++类名冲突

    我现在正在做一个项目 需要整合两个子项目 项目A是用C 编写的 项目B是用C编写的 一个问题是 在项目B中 有一个名为vector它是由其作者创建的 在项目 A 中 std vector in STL用来 因为项目B以后可能会更新 所以我不
  • Qt Creator:在终端中运行

    我想获得在 Qt Creator 中运行程序的完整控制台功能 与此处描述的问题相同 使用 Qt Creator 进行控制台输入 https stackoverflow com questions 1356328 console input
  • 如何在 Firebase Firestore 中使用多个 orderBy 查询进行排序?

    如果我想根据这种情况对文档进行排序 选择有库存的产品 通过检查名为 count 的字段 指定产品的总件数 根据另一个称为 价格 的字段对元素进行排序 看起来很简单 只需使用这段代码 DBRef collection col where co
  • 如何获取 cElementTree 中某个元素的所有文本子元素?

    我正在使用cElementTreePython 中的模块用于获取某个文本的子级XML树 使用text财产 但它似乎只适用于直接文本子项 见下文 python gt gt gt import xml etree cElementTree as
  • 设置Paramiko模块的sftp.get()时间限制

    我正在使用 Paramiko 的 SFTP 客户端将文件从远程服务器下载到客户端 即获取操作 要传输的文件有点大 1GB 所以我希望如果时间超过10秒 get操作就会超时 但是设置连接的超时值不起作用 它似乎只是创建 SSH 连接的超时 而
  • Mongoid - 同一外域的两个域的逆

    我试图让以下 Mongoid 关系发挥作用 但每个团队的游戏字段都是一个空数组 这不是一个有效的关系模型吗 我是否需要分开比赛 即主场比赛和客场比赛 class Team include Mongoid Document has many