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) }
我想做的是创建适当的命名范围以获取 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) }