【发布时间】:2011-08-12 17:08:42
【问题描述】:
假设我有两张桌子,一张叫僵尸(id,name,graveyard),一张叫武器(id,name,strength,zombie_id)。武器 :belongs_to Zombies 找到具有名为“jack”的僵尸的武器的最简单方法是什么?
谢谢!
【问题讨论】:
标签: ruby-on-rails database activerecord connection
假设我有两张桌子,一张叫僵尸(id,name,graveyard),一张叫武器(id,name,strength,zombie_id)。武器 :belongs_to Zombies 找到具有名为“jack”的僵尸的武器的最简单方法是什么?
谢谢!
【问题讨论】:
标签: ruby-on-rails database activerecord connection
Weapon.includes(:zombie).where("zombies.name = ?", "jack")
这将返回一个集合,因此如果您只想要第一个,请将 .first 附加到该查询。
所以总而言之:includes 会进行连接,但也会保留包含的表,以便您可以在 where 子句中引用它。
【讨论】:
"zombies.name = ?", "jack"而不是:zombie => {:name => "jack"}
[]),然后当你调用.first 时它只会返回nil。
.includes() 进行表连接,但保留在表周围,以便您可以引用它。您无法执行您的建议,因为 :zombie 不是您的 Weapon 表中任何列的名称。
belongs_to僵尸