rails 4 个跨模型命名范围

rails 4 cross model named scopes

我想做的是创建适当的命名范围以获取 3 天前创建的登录用户的所有报告

class User < ActiveRecord::Base
    has_many :appraisals

end

class Appraisal < ActiveRecord::Base
    belongs_to :user
    has_one :report

    scope :submitted, -> { joins(:report).where("reports.created_at >= ?", 3.days.ago) }
end

class Report < ActiveRecord::Base
    belongs_to :appraisal
end

我尝试了不同的 rails 控制台语句,但也许我用错了方法。

在 rails 控制台中,我尝试了各种方法,但我一直收到此错误

PG::UndefinedTable:错误:缺少 table "report"

的 FROM 子句条目

使用

等语句
user = User.find(2)
user.appraisals.submitted

有什么想法吗?

joins 中,您必须像这样指定关联名称:

scope :submitted, -> { joins(:report).where("appraisal_reports.created_at >= ?", 3.days.ago) }