ruby-on-rails - Ruby on Rails - Has_many 通过连接表属性限制和排序

标签 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

在我的事件表中有 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/

相关文章:

ruby-on-rails - 删除/停用 Ruby/Rails 隐式转换

javascript - JavaPOS Applet 和 Javascript

sql - 如何让 GROUP BY 选择 "earliest"结果?

ruby - 我可以在 Windows 中将 Sass 与批处理脚本一起使用吗

ruby - 除了将其转换为数组之外,还有什么方法可以获取有序哈希的第 N 个键或值吗?

ruby-on-rails - 为什么 Rails 会为 HEAD 请求渲染模板?

ruby - 无法加载 Twitter gem - 没有这样的文件

ruby - 将十六进制字符串转换(解码)为二进制字符串

ruby - MRI 和 YARV Ruby 实现——Ruby 1.9 发生了什么?

ruby-on-rails - 如何向 Stripe 客户申请优惠券