我想做的是通过has_many:through关系的: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相关的类(class):@courses = current_user.courses而且我希望能够执行以下操作:@courses = current_user.courses.group('subscriptions.state')
此外,将记录分组后,在 View 中循环显示这些记录的正确方法是什么?在我的应用程序的另一个地方,我分别使用group_by和each_pair来完成此操作,但是那是一个单独的模型。

最佳答案

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

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

关于ruby-on-rails - 如何在has_many :through association上对Active Record关系进行分组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11804554/

10-10 06:43