Ruby on rails 在两个表上创建Rails范围比较字段
我在一个应用程序中有许多关联的表Ruby on rails 在两个表上创建Rails范围比较字段,ruby-on-rails,activerecord,named-scope,Ruby On Rails,Activerecord,Named Scope,我在一个应用程序中有许多关联的表 class Listing < ActiveRecord::Base belongs_to :house belongs_to :multiple_listing_service end class House < ActiveRecord::Base has_one :zip_code has_one :primary_mls, through: :zip_code end 类列表
class Listing < ActiveRecord::Base
belongs_to :house
belongs_to :multiple_listing_service
end
class House < ActiveRecord::Base
has_one :zip_code
has_one :primary_mls, through: :zip_code
end
类列表
我想创建一个范围,用于生成与关联房屋的主MLS相关的所有列表。换句话说,范围应该生成所有列表,其中关联房屋的多个\u listing\u service\u id=primary\u mls.id
我尝试了几十种嵌套联接作用域,但似乎都不起作用。充其量,他们只是返回所有列表,通常会失败
有什么想法吗?如果我理解正确,我不确定纯粹的范围是正确的选择。假设你有:
class MultipleListingService < ActiveRecord::Base
has_many :listings
has_many :zip_codes
end
我有一个这样的方法,对于一个实例来说很好,但是我需要得到一个包含所有主要列表的数组,这样我就可以从中生成一些图表。把所有的东西都装进内存需要很长时间
class House < ActiveRecord::Base
...
def associated_listings
primary_mls.listings
end
end
class Listing < ActiveRecord::Base
...
scope :primary, -> { joins(:houses => [:zip_codes])
.where('zip_codes.multiple_listing_service_id = listings.multiple_listing_service_id') }