【问题标题】:Searching through Table connections in Rails在 Rails 中搜索表连接
【发布时间】:2011-08-12 17:08:42
【问题描述】:

假设我有两张桌子,一张叫僵尸(id,name,graveyard),一张叫武器(id,name,strength,zombie_id)。武器 :belongs_to Zombies 找到具有名为“jack”的僵尸的武器的最简单方法是什么?

谢谢!

【问题讨论】:

    标签: ruby-on-rails database activerecord connection


    【解决方案1】:
    Weapon.includes(:zombie).where("zombies.name = ?", "jack")
    

    这将返回一个集合,因此如果您只想要第一个,请将 .first 附加到该查询。

    所以总而言之:includes 会进行连接,但也会保留包含的表,以便您可以在 where 子句中引用它。

    【讨论】:

    • 如果你在最后追加 .first() ,如果什么都找不到,你会不会得到一个异常?
    • .includes() 有什么作用?为什么有必要?你为什么用"zombies.name = ?", "jack"而不是:zombie => {:name => "jack"}
    • @mkk 不,因为它会返回一个空数组([]),然后当你调用.first 时它只会返回nil
    • @joshim5 .includes() 进行表连接,但保留在表周围,以便您可以引用它。您无法执行您的建议,因为 :zombie 不是您的 Weapon 表中任何列的名称。
    • 但是武器belongs_to僵尸
    猜你喜欢
    • 2014-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-20
    • 1970-01-01
    • 2015-11-04
    相关资源
    最近更新 更多