我有一个遗留数据库,我有两个模型:
class Purchase
belongs_to :product
end
class Product
has_many :purchases
end
现在随着时间的推移,一些products
被删除了,即使数据库中仍然存在关联的purchases
。有没有办法可以从rails控制台中获取已关联Purchases
的所有products
列表?
我的purchase
表引用了product
,并且列product_id
答案 0 :(得分:3)
Purchase.left_outer_joins(:product).where(products: {id: nil})
注意栏杆5有left_outer_joins
因此,基本上这将导致所有没有相关产品的购买。
答案 1 :(得分:2)
为什么在删除产品时没有取消购买?
class Product
has_many :purchases, :dependent => :nullify
end
就像那样,你所要做的就是查询product_id为null的购买。希望这有帮助!
编辑: 如果你现在正在使用这种方法,为了更新旧记录并使它们保持一致,你应该这样做:
Purchase.where.not(product_id: Product.select(:id).distinct).update_all(product_id: nil)
所以这样它现在应该可以使用