【发布时间】:2013-04-18 16:30:45
【问题描述】:
最好的方法是什么?我正在尝试这样的事情,但感觉......错了。 (注意:这都是关于 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
Rails 3.2.11、Ruby 1.9.3
我要做什么
我需要在 has_many 上传递多个条件:通过关联和引用“自我”模型在这些条件下进行比较。
我找到了具有多种条件的示例。我找到了自我引用比较的例子。但是我找不到这两个元素的任何东西。这让我觉得我做错了。
背景和定义
提交记录了检查表及其相关作业在某个时间点的快照。因此,我希望能够说“submission.jobs”并查看在创建提交本身时与提交的清单相关联的作业。*
*实际上稍微复杂一些:我想要创建提交时存在且当时尚未存档的作业。
清单是动态的并且会随着时间而改变,但我总是通过一个本土的存档系统保持历史记录的完整性,因此当为该清单创建提交时,清单上的作业将是清单中的 Jobs where Job. created_at 在 Submission.created_at 之前(尚未归档)。
因此,虽然一个提交属于_一个清单,并且清单有_许多作业,但对于特定提交而言唯一重要的作业是在创建提交时存在(并且尚未归档)的作业。
【问题讨论】:
标签: ruby-on-rails associations conditional-statements has-many-through