我在应用程序中有许多关联的表
i
我想创建一个范围,用于生成与关联的House的主MLS相关的所有列表。换句话说,范围应该生成所有列表,其中multiple_listing_service_id = primary_mls.id用于关联的房屋。
我已经尝试过几十个嵌套连接范围,似乎没有一个工作。他们最多只返回所有列表,通常都会失败。
有什么想法吗?
答案 0 :(得分:0)
如果我理解正确,我不确定一个纯粹的范围是什么样的。假设你有:
class MultipleListingService < ActiveRecord::Base
has_many :listings
has_many :zip_codes
end
我会选择类似的东西:
class House < ActiveRecord::Base
...
def associated_listings
primary_mls.listings
end
end
如果您的目标只是获取主要商家信息,那么我会向is_primary
添加Listing
字段。这将是最有效的。另一种选择是3表连接,它可以工作,但很难很好地优化:
class Listing < ActiveRecord::Base
...
scope :primary, -> { joins(:houses => [:zip_codes])
.where('zip_codes.multiple_listing_service_id = listings.multiple_listing_service_id') }