在多个协会中确定范围?

时间:2012-04-20 08:54:13

标签: ruby-on-rails ruby-on-rails-3

我有这种关系

class House
 has_many :apartments
end 

class Apartments
 belongs_to :house
 has_many :category_join_table
 has_many :categories, :through => :category_join_table
end

我在我的房子模型中制作了一个范围方法,目的是“仅显示带公寓的房屋”

scope :with_apartments, lambda { joins(:appartments).group('appartments.id').uniq { |h| h[:id] }}

所以我可以在控制器逻辑中创建一个house.with_apartments。这很好,所以我只得到页面上有公寓的房子。没有公寓的房子没有显示出来。

但现在我想与我的类别模型建立关联(many_to_many)。所以“只显示有公寓和类别的房子= X”

1 个答案:

答案 0 :(得分:2)

试试这个:

# in category.rb

has_many :category_join_table
has_many :apartments, :through => :category_join_table
has_many :houses, :through => :apartments