2
我有一個名爲Post
(博客文章)的模型和一個名爲Category
的模型。每個帖子belongs_to
一個類別。每個類別都有一個名爲retainer
的屬性,指定的時間量後「過期」之前,因此,例如movies_category.retainer = 30.days
軌道模型範圍內的關聯數據
我試圖做的是創建範圍爲Post
,用於查找所有這些都是職位「過期」。因此,舉例來說,假設我是硬編碼的30.days
的價值,它是適用於所有類別的(因此,所有的職位),適用範圍是:
scope :expired, lambda { where("posts.created_at < ?", 30.days.ago) }
然而,而不是硬編碼值30.days.ago
,我想獲得從這篇文章的類別retainer
值和底座上的條件,所以是這樣的:
scope :expired, lambda { where("posts.created_at < ?",
Time.now - post.category.retainer) }
所以投入的話:我想所有這些過期的帖子,和到期狀況確定按照每個帖子的類別的保留值(即電影類別中的帖子在10天內過期,帖子在遊戲類別5天內到期等)
這甚至有可能嗎?我需要某種形式的連接或某種形式嗎?
謝謝,但我不知道的東西看起來不正確。 Post.expired應該給我過期的帖子,不管他們在什麼類別。如果我做Post.expired(post.category.retainer),是不是隻計算一個帖子的類別? – 2011-03-28 08:43:20
我認爲這不符合你目前的結構。如果您更新郵件上的expired_at,只要它與類別更改相關聯(或者,如果您更新類別並將其推送到任何帖子),它會非常簡單,這將是我的建議。 – ctide 2011-03-28 08:50:45
好的,所以你認爲在帖子中保留expires_at屬性可能更容易,而不是保留類別上的保留屬性。感謝這個想法,我會考慮一下。 – 2011-03-28 08:55:22