如何在has_many:through关联上对Active Record关系进行分组

时间:2012-08-03 23:28:59

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

我想要做的是通过关于has_many:through关系的模型的列,在Active Record关系中对记录进行分组,但我不知道最好的方法是什么。

首先,我的模特:

User has_many :subscriptions
     has_many :courses, :through => :subscriptions

Subscription belongs_to "both"

Course has_many :subs...
       has_many :users, :through => :subscriptions

我抓住与current_user相关的课程,如下所示:@courses = current_user.courses 我希望能够做到这样的事情:@courses = current_user.courses.group('subscriptions.state')< - 这显然不起作用。

此外,在对记录进行分组后,在视图中循环显示它们的正确方法是什么?在我的应用程序的另一个地方,我分别使用了group_by和each_pair来实现这一点,但那是一个单独的模型。

1 个答案:

答案 0 :(得分:26)

current_user.courses.select('courses.*, subscriptions.state').group_by(&:state)

这将返回一个哈希,每个键都是一个状态。这是有效的,因为courses方法已经在进行连接。