使用has_many belongs_to关系加入范围

时间:2011-03-23 16:08:14

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

Class A
 has_many :b

 def my_b_with_c
  #all B that have C and belong to A
  self.bs.has_c
 end

Class B
 belongs_to :a
 has_many :c

 scope :has_c, :join => :c

Class C
 belongs_to :b

我的问题是当我做A.first.my_b_with_c时,我得到重复的记录。实现my_b_with_c的正确方法是什么(和/或B的范围) 谢谢!

1 个答案:

答案 0 :(得分:1)

解决了它。

替换

scope :has_c, :join => :c

scope :has_c, joins(:c).group("bs.id") 

下一个问题是做has_c.count,需要是has_c.all.count

干杯