9

Two models:

class Task < ActiveRecord::Base
  has_many :subtasks

end

class Subtask < ActiveRecord::Base
  belongs_to :task

end

Subtask have boolean attribute that set to true if subtask is complete.

How can i check if a task has at least one completed subtask?

Edward
  • 917
  • 1
  • 9
  • 18

1 Answers1

22

The simplest possible thing would be

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

If you define a completed scope on subtasks this could be shortened to

task.subtasks.completed.exists?

Both of these will fire a database query, so if you already have the subtasks loaded (task.association(:subtasks).loaded?) it will probably be quicker to manipulate the ruby objects via somethig like

task.subtasks.any? {|subtask| subtask.completed?}
Frederick Cheung
  • 83,189
  • 8
  • 152
  • 174