【问题标题】:How to group an Active Record relation on a has_many :through association如何在 has_many 上对 Active Record 关系进行分组:通过关联
【发布时间】:2012-08-03 23:28:59
【问题描述】:

我想做的是通过 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 相关的课程:@courses = current_user.courses 我希望能够做类似的事情:@courses = current_user.courses.group('subscriptions.state')

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

【问题讨论】:

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


    【解决方案1】:
    current_user.courses.select('courses.*, subscriptions.state').group_by(&:state)
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-01
      • 2012-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多