【发布时间】:2018-05-25 17:27:54
【问题描述】:
鉴于Sequel::Model 商品和商店,通过Listings 加入,我想根据列表的属性找到Items 及其关联的Stores。
DB.create_table? :items
primary_key :id
end
DB.create_table? :stores
primary_key :id
end
DB.create_table? :listings
foreign_key :store_id
foreign_key :item_id
TrueClass :active, null: true
String :name
end
class Item < Sequel::Model
many_to_many :stores, join_table: :listings
end
class Store < Sequel::Model
many_to_many :items, join_table: :listings
end
class Listing < Sequel::Model
end
我可以使用.association_join 和.where 子句来执行此操作(如下所示),但是(A)我不确定这是否正确(B)它会产生一个带有来自两者的道具的结果连接表和 (C) 对结果 Item 调用 #stores 会导致另一个查询。
Item.association_join(:stores).where(active: true, name: 'Sears').eager(:stores).first()
我的最终目标是一个Items 的数据集,它将热切地加载#stores。
这样做的最佳方法是什么?谢谢!
【问题讨论】:
标签: ruby postgresql sequel