2014-10-01 18 views
0

所以我有一個簡單的任務列表,任務在任務列表作用域中作爲列表。 現在每個任務都可以被標記爲已歸檔並從列表中退出。Rails act_as_list自定義作用域

所以我需要act_as_list範圍包括WHERE archived = FALSE條件。

我發現這個職位:http://macdiggs.com/2007/08/27/customizing-scope-in-acts_as_list/但它是從2007年,並不適合我。 另外我使用postgres,所以我不想硬編碼archived = false,因爲postgres處理與mysql不同的布爾(我認爲)。

我想:

scope :not_archived, -> { where(archived: false) } 
scope :siblings, -> { where(tasklist_id: self.tasklist_id) } 
acts_as_list :scope => siblings.not_archived 

但它不工作。自變量引用類而不是實例。 我有點失落。在此先感謝

回答

0

scope充當一個類的方法和self它將引用到類。內部活動記錄將範圍轉換爲類方法。你可以通過tasklist_id作爲選項

變化的兄弟姐妹範圍

scope :siblings, ->(tasklist_id) { where(tasklist_id: tasklist_id) } 
+0

您好感謝您的回覆。現在我得到一個錯誤「錯誤的參數數量(0爲1)」。我猜最後一行:siblings.not_archived正在等待兄弟姐妹範圍的一個參數:比如兄弟姐妹(5)。 – MonsieurNinja 2014-10-01 16:57:43