Ruby on Rails - Has_many through - 限制和按连接表属性排序

时间:2016-06-18 17:13:59

标签: ruby-on-rails ruby

我有3个型号:

用户

class User < ActiveRecord::Base
  has_many :events
  has_many :trainings, through: :events
end

事件

class Event < ActiveRecord::Base
  belongs_to :user
  belongs_to :training
end

培训

class Training < ActiveRecord::Base
  has_many :events
  has_many :user, through: :events
end

在我的Event表中有user_id和training_id,但也有日期。此日期表示用户进行特定培训的日期。

对于每个用户,我想选择与不同培训相对应的最新事件。例如,特定用户可能已接受过基本生命支持方面的培训,例如2015年和2016年,但我只想选择2016年。我尝试过使用示波器,但它似乎无法正常工作。

任何人都可以帮我吗?

1 个答案:

答案 0 :(得分:0)

我们假设你有变量user

要找到他最近的活动:

user.events.order(:date).first

要查找他最近的特定培训事件:

user.trainings.find_by(subject: "life_support").events.order(:date).first

rails团队也有关于此主题的精彩指南:http://guides.rubyonrails.org/active_record_querying.html