Ruby on rails Rails充当列表自定义范围

Ruby on rails Rails充当列表自定义范围,ruby-on-rails,list,Ruby On Rails,List,因此,我有一个简单的任务列表,其中任务充当:tasklist范围中的列表。 现在,每个任务都可以标记为已存档并从列表中退出 因此,我需要act_as_list范围包含WHERE archived=FALSE条件 我发现了这个帖子:但它是从2007年开始的,对我不起作用。 我也在使用postgres,所以我不想硬编码archived=false,因为我认为postgres处理布尔值的方式与mysql不同 我试过: scope :not_archived, -> { where(archive

因此,我有一个简单的任务列表,其中任务充当:tasklist范围中的列表。 现在,每个任务都可以标记为已存档并从列表中退出

因此,我需要act_as_list范围包含WHERE archived=FALSE条件

我发现了这个帖子:但它是从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
但它不起作用。自变量引用类而不是实例。 我有点迷路了。提前感谢

作用域充当类方法,其中的self将引用类。内部活动记录将作用域转换为类方法。您可以将任务列表\u id作为选项传递

将范围更改为

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

你好,谢谢你的回复。现在,我得到了一个错误:1的参数数量为0。我猜最后一行:sibles.not_archived需要一个sibles范围的参数:例如,like siblings5。