我所試圖做的是:Ruby on Rails的獨特有序查詢
找到最新
CompetencyLog (completed_at)
每個Competency
在Course
爲Member
class Member < ActiveRecord::Base has_many :competency_logs has_many :awards end class CompetencyLog < ActiveRecord::Base belongs_to :member belongs_to :competency has_one :course, through: :competency end def Course < ActiveRecord::Base has_many :competencies has_many :awards end class Competency < ActiveRecord::Base belongs_to :course end
我有設法得到有序清單
course = Course.find(params[:course_id])
current_member.competency_logs.where('competency_id IN (?)', course.competency_ids).ordered
從這裏我已經嘗試了幾個不同的事情,只限於沒有成功。任何建議將不勝感激。展望做盡可能多的這個數據庫,儘可能爲速度,因爲這常常被稱爲同時也依賴於不斷變化的時間戳的CompetencyLog
我想要的結果基本
member.competency_logs.where('competency_id IN (?)', course.competency_ids).uniq.pluck(:competency_id)
但不是competency_id的我想competency_log車型
所以我增加了一些額外的關係,並拿出到目前爲止以下,目前正在調查的PostgreSQL DISTINCT ON
作爲替代
competency_logs = competencies.collect { |c| c.competency_logs.ordered.first }
competency_logs.collect { |c| c.current? }.all?
謝謝你的迴應,但是這是行不通的。每門課程都有很多'Competencies',每個'Competency'都有很多'CompetencyLogs'我需要爲每個'Competency'獲得最新的'CompetencyLog' –