2012-03-28 20 views
9

2つのモデルを設定している場合:チェック少なくとも1つのレコードが指定された属性が真

class Task < ActiveRecord::Base 
    has_many :subtasks 

end 

class Subtask < ActiveRecord::Base 
    belongs_to :task 

end 

サブタスクがサブタスクが完了している場合はtrueに設定ブール属性を持っています。

タスクに少なくとも1つの完了したサブタスクがあるかどうかを確認するにはどうすればよいですか?あなたは、これはこれらの両方は、データベースクエリを起動します

task.subtasks.completed.exists? 

に短縮することができサブタスクにcompleted範囲を定義した場合

答えて

19

最も簡単な事が

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

になり、だからもしすでにサブタスクがロードされている(task.association(:subtasks).loaded?)ように、おそらくsomethig経由でルビーオブジェクトを操作する方が速いでしょう

task.subtasks.any? {|subtask| subtask.completed?} 
関連する問題