通过嵌套资源逻辑过滤ActiveRecord记录 - Rails

时间:2016-09-24 06:10:02

标签: ruby-on-rails ruby activerecord filter

我正在rails中构建一个任务列表应用程序,允许用户创建包含任务的任务列表。我正在尝试设置过滤,因此我只能显示任务列表,其中所有任务都标记为完成。

目前:

清单型号:
class List < ActiveRecord::Base
  belongs_to :user
  has_many :tasks
end
任务模型:
class Task < ActiveRecord::Base
  belongs_to :list

  def completed?
    !completed_at.blank?
  end
end

据我了解,ActiveRecord的.where查询方法仅查看该模型的字段及其值(例如:@lists.where(name: "List Name")

有没有人知道一种类似于以下伪代码的方法:

@completed_lists = @lists.where(list.tasks.completed.count == list.tasks.count)

由于

2 个答案:

答案 0 :(得分:0)

尝试使用List.all.map{|list| list if list.tasks.completed.count == list.tasks.count}

答案 1 :(得分:0)

您可以使用此功能加载所有未完成任务的列表:

mapping = {
    0 : {
        "EAST" : 1
    },
    1 : {
        "EAST": 2,
        "WEST": 1,
        "SOUTH": 4
    }
}


if userInput.upper() == 'QUIT':
    break
else:
    userInput = mapping[userPoint][userInput.upper()]