From 4016c89cdf4e44c32f6622949f18a75ac8d18b42 Mon Sep 17 00:00:00 2001 From: Henrik Bohre Date: Mon, 8 Jun 2009 23:43:40 +0200 Subject: [PATCH] #300: Added pending_successors collection and enforces referential integrity for dependencies --- app/models/todo.rb | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/app/models/todo.rb b/app/models/todo.rb index 61558d67..c2704cc0 100644 --- a/app/models/todo.rb +++ b/app/models/todo.rb @@ -5,12 +5,15 @@ class Todo < ActiveRecord::Base belongs_to :user belongs_to :recurring_todo - has_many :predecessor_dependencies, :foreign_key => 'predecessor_id', :class_name => 'Dependency' - has_many :successor_dependencies, :foreign_key => 'successor_id', :class_name => 'Dependency' - has_many :predecessors, :through => :successor_dependencies - has_many :successors, :through => :predecessor_dependencies + has_many :predecessor_dependencies, :foreign_key => 'predecessor_id', :class_name => 'Dependency', :dependent => :destroy + has_many :successor_dependencies, :foreign_key => 'successor_id', :class_name => 'Dependency', :dependent => :destroy + has_many :predecessors, :through => :successor_dependencies, :dependent => :destroy + has_many :successors, :through => :predecessor_dependencies, :dependent => :destroy has_many :uncompleted_predecessors, :through => :successor_dependencies, - :source => :predecessor, :conditions => ['NOT (state = ?)', 'completed'] + :source => :predecessor, :conditions => ['NOT (state = ?)', 'completed'], :dependent => :destroy + has_many :pending_successors, :through => :predecessor_dependencies, + :source => :successor, :conditions => ['state = ?', 'pending'], :dependent => :destroy + named_scope :active, :conditions => { :state => 'active' } named_scope :not_completed, :conditions => ['NOT (state = ? )', 'completed']