最好的方法是什么?我正在尝试这样的事情,但感觉......错了。(注意:这都是关于 has_many 关联中的 :conditions ......)
class Submission < ActiveRecord::Base
belongs_to :checklist
has_many :jobs, :through => :checklist, :source => :job, :conditions => ["jobs.archived = false OR jobs.archived_at > #{self.created_at} OR jobs.created_at < #{self.created_at}"]
end
导轨 3.2.11,红宝石 1.9.3
我正在尝试做的事情
我需要在 has_many :through 关联上传递多个条件,并参考“自我”模型在这些条件下进行比较。
我找到了具有多种条件的示例。我找到了自我引用比较的例子。但是我找不到这两个元素的任何东西。这让我觉得我做错了。
背景和定义
提交记录了检查表及其相关作业在某个时间点的快照。因此,我希望能够说“submission.jobs”并查看在创建提交本身时与提交清单相关联的工作。*
*它实际上稍微复杂一些:我想要创建提交时存在且当时尚未存档的作业。
清单是动态的并且会随着时间而改变,但我总是通过一个本土的归档系统保持历史记录的完整性,因此当为该清单创建提交时,清单上的作业将是 Job.created_at 之前的清单的作业Submission.created_at(尚未归档)。
因此,尽管一个提交属于_一个清单,并且清单有_许多作业,但对于特定提交来说唯一重要的作业是在创建提交时存在(并且尚未归档)的作业。