【问题标题】:Check if at least one record have a given attribute set to true检查是否至少一条记录的给定属性设置为 true
【发布时间】:2012-03-28 18:22:02
【问题描述】:

两种型号:

class Task < ActiveRecord::Base
  has_many :subtasks

end

class Subtask < ActiveRecord::Base
  belongs_to :task

end

子任务有布尔属性,如果子任务完成则设置为真。

我如何检查一个任务是否至少有一个已完成的子任务?

【问题讨论】:

    标签: ruby-on-rails activerecord has-many belongs-to


    【解决方案1】:

    最简单的可能是

    task.subtasks.where(:completed => true).exists?
    

    如果您在子任务上定义 completed 范围,则可以缩短为

    task.subtasks.completed.exists?
    

    这两个都会触发数据库查询,所以如果您已经加载了子任务 (task.association(:subtasks).loaded?),通过类似的东西来操作 ruby​​ 对象可能会更快

    task.subtasks.any? {|subtask| subtask.completed?}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-28
      • 1970-01-01
      • 1970-01-01
      • 2013-09-27
      • 1970-01-01
      • 1970-01-01
      • 2011-05-17
      • 2022-01-11
      相关资源
      最近更新 更多