【问题标题】:Filter on a has many through connection过滤器上有多个直通连接
【发布时间】:2019-12-07 12:30:49
【问题描述】:

我有一个工人,他有很多时间和很多工作时间

class Worker < ActiveRecord::Base

has_many :hours
has_many :jobs, :through => :hours

....

我试图获得一些时间来对工作的日期属性进行排序。看不懂语法

hours.includes(:jobs).where("jobs.date >= ?", d).each do |h|
  sum = sum + h.total_hours_worked
end

一直说未知列名“jobs.date”

我认为包含不是必需的,因为它是一个直通连接,但无论有没有都无法使其工作。我也试过单数名字,没有运气

【问题讨论】:

  • sum 定义在哪里?

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


【解决方案1】:

知道了

hours.includes(:job).where("jobs.date >= ?", d).references(:job).each do |h|
  sum = sum + h.total_hours_worked
end

【讨论】:

    【解决方案2】:
    hours.joins(:jobs).where("jobs.date >= ?", d).sum(:total_hours_worked)
    

    【讨论】:

    • 请在代码中添加解释,以便理解如何解决问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-23
    • 1970-01-01
    • 2019-06-19
    相关资源
    最近更新 更多