Rails:这种带有关联条件的多重连接有什么问题?

2024-02-09

这是我的模型:

class Deck < ActiveRecord::Base
  belongs_to :game
  has_many :deck_cards
end

class DeckCard < ActiveRecord::Base
  belongs_to :card
  belongs_to :deck
end

class Card < ActiveRecord::Base
end

这是我尝试的发现:

DeckCard.all :joins => [:card, :deck], :conditions => {{:decks => {:game_id => @game.id}}, {:cards => {:present => true}}}

我不断收到错误:未定义的方法all对于#Class:0x4b2a98>。我假设这是解析我的条件时出现的误导性错误。我正在遵循活动记录查询指南。我不确定是否使用关联的单数或复数形式。看起来像属于属于,你应该在 :joins 哈希中使用单数形式,但我不确定在 :conditions 哈希中,所以我尝试了两者,但都不起作用。

如果还不清楚,我在 SQL 中尝试做的是:

SELECT * from DeckCards  
INNER JOIN decks on decks.id = deck_cards.deck_id  
INNER JOIN cards on card.id = deck_cards.card_id  
WHERE decks.game_id = 4  
AND cards.present = true

我现在可以通过使用来解决它DeckCard.find_by_sql,但最好弄清楚为什么关联的连接和条件不起作用。

我在 Windows 上使用 InstantRails-2.0,它使用 Rails 2.0.2

编辑:使用一些进展DeckCard.find(:all ...)反而。我还根据另一个答案编辑了括号。我最新的代码是

DeckCard.find :all, :joins => [:card, :deck], :conditions => {:deck => {:game_id => @game.id}, :cards => {:present => true}}  

这会产生以下错误:

Unknown column 'deck_cards.decks' in 'where clause': SELECT `deck_cards`.* FROM `deck_cards`   INNER JOIN `cards` ON `cards`.id = `deck_cards`.card_id  INNER JOIN `decks` ON `decks`.id = `deck_cards`.deck_id  WHERE (`deck_cards`.`decks` = '--- \n- :game_id\n- 5\n' AND `deck_cards`.`cards` = '--- \n- :present\n- true\n')  

连接看起来正确,但 WHERE 条件不正确。我尝试过一些不同的事情,比如:deck or :decks在条件条款中但没有运气。这是否是当前 ActiveRecord 查询接口文档与 2.0.2 中条件完成方式之间的另一个区别?

Thanks!


您需要完成与卡模型的关联:

class Card < ActiveRecord::Base
  has_many :deck_cards
end

EDIT 2: 尝试这个:

 DeckCard.find :all, :joins => [:card, :deck], :conditions => ["decks.game_id = ? and cards.present = ?", @game.id, true]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails:这种带有关联条件的多重连接有什么问题? 的相关文章

随机推荐

  • 为什么在 Win 64 上安装 Number::Format 失败?

    我正在尝试安装Number Format https metacpan org pod Number Format在 Windows 上与 Padre 一起使用 cpanm Number Format 我收到以下错误 我怎样才能解决这个问题
  • 使用 .NET 生成具有给定扩展名的唯一临时文件名[重复]

    这个问题在这里已经有答案了 可能的重复 如何使用 net 创建具有特定扩展名的临时文件 https stackoverflow com questions 581570 how can i create a temp file with a
  • 扫描仪NoSuchElementException

    我编写了一个程序 要求输入 3 个整数来输出三角形类型 一切都运行并编译成功 但是 似乎在要求用户查看是否要再次循环的部分 在线编译器输出错误 线程 main 中的异常 java util NoSuchElementException 在
  • Travis ci 上的 Python3 模块导入失败

    我制作了一个 Python 3 脚本来测试我的项目 剧本 https github com anestv server test有这样的结构 main py myRequest py external requests init py ma
  • Android 检查 EditText 中的空格

    我在 Android 中编辑文本时遇到问题 我有一个名为 Username 的字段 我希望每当有人写一个带有空格的用户名时 例如 Gaurav Arora 然后 在按下登录按钮时 它应该引发一个祝酒词或错误 我这样做了 我只是在文本观察器的
  • Android 如何从 SharedPreference 设置 EditTextPreference 的默认值?

    这次在同一个项目中 我面临一个稍微具有挑战性的问题 在 res xml 文件夹中的 settings xml 文件中
  • 从文件中删除扩展名[重复]

    这个问题在这里已经有答案了 可能的重复 如何从字符串中删除扩展名 只有真正的扩展名 https stackoverflow com questions 2395882 how remove extension from string onl
  • Play框架和OSGI

    是否可以将 Play 框架与 OSGI 集成以创建可插入组件 有人尝试过吗 如果您的意思是 使用 OSGi 创建 Play 模块 那么不 不支持它 如果您的意思是 将 Play 部署为 OSGi 模块 那么不 不支持它 公平地说 没有理由推
  • Ajax 加载后 AddThis 不起作用

    我有 AddThis js 用于将详细信息添加到日历的书签 这在页面加载时工作正常 但我使用 ajax 加载并替换 html 进行了一些过滤 之后 AddThis 按钮不显示 这是我的 ajax 代码 document ready func
  • 如何使用 jQuery 添加 DOM 元素?

    我有一个当前用来显示隐藏 div type 的函数 我怎样才能修改这段代码 而不是在隐藏的div中淡出 我可以将新的 div 添加到 DOM jQuery function Add Answer jQuery add answer clic
  • 将文本显示到另一个类的标签 - JFrame

    我有一个 GUI 屏幕 里面有一个标签 我现在想用文本设置标签 如下所示 Test 但它没有得到更新 我认为以下代码中有错误 我在 try 块中重新创建了 FrameTest 的新对象 FrameTest frame new FrameTe
  • 如何让puppeteer通过socks5代理工作?

    我购买了socsk5的代理服务器版本 所有手册中都有相同的示例 const browser await puppeteer launch headless true ignoreHTTPSErrors true defaultViewpor
  • 更改 Qt5 中 QGraphicsScene/View 中的像素图位置

    我有一个普通的 QGraphicsView QGraphicsScene 我想要做的就是将 QPixmap png 加载到图形并手动设置该 QPixmap 图像的位置 我找到了解决方案 但它们不适用于 Qt5 关于如何在 Qt5 上实现这一
  • ionic externalRootDirectory 无法写入 SD 卡

    我一直在尝试使用 IONIC 中的 cordova plugin file 插件写入 Android 设备上的 可移动 SD 卡 但没有成功 该文档指定了 externalRootDirectory 为 Android 外部存储 SD 卡
  • 无法建立 SSL 连接

    我正在使用第三方库 Splunk C SDK http dev splunk com csharp 在我的 ASP NET Core 应用程序中 我尝试通过此 SDK 连接到我的本地主机 Splunk 服务 但出现异常 System Net
  • ASP.NET - Ajax 控件工具包 - TabContainer 始终隐藏

    我使用以下代码将 TabContainer 添加到页面
  • SonarQube 测试覆盖 .NET 5

    我想在本地 SonarQube 实例 在 Windows 上 中显示 NET 5 单元测试的测试覆盖率 dotnet sonarscanner begin k MyProject d sonar host url http localhos
  • Stream_socket_client 无法连接到 Apple APNS(权限被拒绝)

    我遇到过通过 php 发送推送通知的罕见情况 但我无法弄清楚 我有一个简单的 php 脚本 可以发送如下所示的通知 如果我通过命令行 php script php 执行此文件 它就可以正常工作 如果我通过网络执行http domain co
  • 使用计算表达式避免厄运金字塔?

    我碰到这个问题 https stackoverflow com questions 39858643 getting rid of the pyramid of doom in f关于 F 中的 末日金字塔 那里接受的答案涉及使用活动模式
  • Rails:这种带有关联条件的多重连接有什么问题?

    这是我的模型 class Deck lt ActiveRecord Base belongs to game has many deck cards end class DeckCard lt ActiveRecord Base belon