我有一个包含许多报告的模型项目(我这里是简短的代码)......
Project
has_many :project_reports
has_many :reports, :through => :project_reports
ProjectReport
belongs_to :project
belongs_to :report
Report
has_one :project_report
has_one :project, :through => :project_report
我在报告中进行了验证,检查以确保没有相同日期的报告,因此我不会在项目范围内获得具有相同日期的重复项。
Validation
unless self.project.reports.where(:report_date => self.report_date).empty?
self.errors.add(:report_date, "report already exists for this date")
end
在Report中调用此验证时,将在Project上调用回调after_update,而不是在Report中调用回调。特别是当我引用项目关联时会发生这种情况。所以即使我这样做......
Validation
self.project
它在Project中而不是在Report中调用after_save。任何帮助或澄清将不胜感激。谢谢!