這樣做的最好方法是什麼?我正在嘗試這樣的事情,但感覺...錯了。 (注:這是所有關於:條件中的has_many關聯...)Rails關聯:如何限制/範圍has_many:通過多個自引用條件?
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」,並看到在提交本身創建時與提交清單相關的工作。*
*它實際上稍微複雜一點:我想要工作這在創建提交時存在並且當時尚未存檔。
檢查清單是動態的,可以隨時間變化,但我始終通過本地歸檔系統保留歷史記錄,因此,在爲清單創建提交時,檢查清單上的工作將成爲檢查清單的工作,其中工作.created_at在Submission.created_at之前(並且尚未歸檔)。
因此,雖然提交文件屬於清單,而清單has_many作業,但對於特定提交而言唯一重要的作業是創建提交時存在(並且尚未歸檔)的作業。
出色答卷。 FWIW,我不得不稍微調整一下標準,所以它看起來像這樣:'where(「created_at <?AND(archived =?OR archived_at>?)」,timestamp,false,timestamp)'。我提供的標準基本上是在提交之前創建的任何工作_;實際上,我的意思是使用標準來拉取在提交之前創建的任何作業,但在創建提交之前不會將其歸檔。但是根據我最初提供的標準,你的回答是正確的。謝謝! – JoshDoody 2013-04-27 17:05:12