gpt4 book ai didi

ruby-on-rails - 在 where 查询中查找 nil has_one 关联

转载 作者:数据小太阳 更新时间:2023-10-29 06:23:26 27 4
gpt4 key购买 nike

这可能是一个简单的问题,但我似乎正在努力寻找一个优雅的解决方案。我有两个 ActiveRecord 模型类,它们之间有 has_one 和 belongs_to 关联:

class Item < ActiveRecord::Base
has_one :purchase
end

class Purchase < ActiveRecord::Base
belongs_to :item
end

我正在寻找一种优雅的方法来查找所有 Item 对象,这些对象没有与之关联的购买对象,理想情况下无需求助于 bool is_purchased 或 Item 上的类似属性。

现在我有:

purchases = Purchase.all
Item.where('id not in (?)', purchases.map(&:item_id))

这行得通,但对我来说似乎效率低下,因为它执行两个查询(并且购买可能是一个庞大的记录集)。

运行 Rails 3.1.0

最佳答案

这是很常见的任务,SQL OUTER JOIN 通常可以很好地完成它。看看here ,例如。

在你的情况下尝试使用类似的东西

not_purchased_items = Item.joins("LEFT OUTER JOIN purchases ON purchases.item_id = items.id").where("purchases.id IS null")

关于ruby-on-rails - 在 where 查询中查找 nil has_one 关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12515268/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com