我有 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
在我的事件表中有 user_id 和 training_id 还有一个日期。此日期表示用户接受特定培训的日期。
对于每个用户,我想选择对应于不同训练的最近事件。例如,某个特定用户可能在 2015 年和 2016 年接受过基本生命支持培训,但我只想选择 2016 年的培训。我试过使用范围,但它似乎不起作用。
谁能帮我解决这个问题?
最佳答案
假设您有变量 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
关于ruby-on-rails - Ruby on Rails - Has_many 通过连接表属性限制和排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37899629/