rails 4交叉模型命名范围

时间:2015-09-25 13:32:37

标签: ruby-on-rails named-scope

我想要做的是创建适当的命名范围,以获取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:错误:缺少表“report”的FROM子句条目

使用

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

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

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

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