Edw*_*ard 9 activerecord ruby-on-rails has-many belongs-to
两种型号:
class Task < ActiveRecord::Base
has_many :subtasks
end
class Subtask < ActiveRecord::Base
belongs_to :task
end
Run Code Online (Sandbox Code Playgroud)
子任务具有布尔属性,如果子任务完成,则该属性设置为true.
如何检查任务是否至少有一个完成的子任务?
Fre*_*ung 19
最简单的可能是
task.subtasks.where(:completed => true).exists?
Run Code Online (Sandbox Code Playgroud)
如果completed在子任务上定义范围,则可以缩短为
task.subtasks.completed.exists?
Run Code Online (Sandbox Code Playgroud)
这两个都会触发数据库查询,所以如果你已经有了子任务的load(task.association(:subtasks).loaded?),那么通过某些方式操作ruby对象可能会更快
task.subtasks.any? {|subtask| subtask.completed?}
Run Code Online (Sandbox Code Playgroud)