summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/models/changeset.rb8
-rw-r--r--db/migrate/20110902000000_create_changeset_parents.rb14
2 files changed, 22 insertions, 0 deletions
diff --git a/app/models/changeset.rb b/app/models/changeset.rb
index 3dae86ec1..4f08c2e95 100644
--- a/app/models/changeset.rb
+++ b/app/models/changeset.rb
@@ -22,6 +22,14 @@ class Changeset < ActiveRecord::Base
belongs_to :user
has_many :changes, :dependent => :delete_all
has_and_belongs_to_many :issues
+ has_and_belongs_to_many :parents,
+ :class_name => "Changeset",
+ :join_table => "#{table_name_prefix}changeset_parents#{table_name_suffix}",
+ :association_foreign_key => 'parent_id', :foreign_key => 'changeset_id'
+ has_and_belongs_to_many :children,
+ :class_name => "Changeset",
+ :join_table => "#{table_name_prefix}changeset_parents#{table_name_suffix}",
+ :association_foreign_key => 'changeset_id', :foreign_key => 'parent_id'
acts_as_event :title => Proc.new {|o| "#{l(:label_revision)} #{o.format_identifier}" + (o.short_comments.blank? ? '' : (': ' + o.short_comments))},
:description => :long_comments,
diff --git a/db/migrate/20110902000000_create_changeset_parents.rb b/db/migrate/20110902000000_create_changeset_parents.rb
new file mode 100644
index 000000000..e679d3f91
--- /dev/null
+++ b/db/migrate/20110902000000_create_changeset_parents.rb
@@ -0,0 +1,14 @@
+class CreateChangesetParents < ActiveRecord::Migration
+ def self.up
+ create_table :changeset_parents, :id => false do |t|
+ t.column :changeset_id, :integer, :null => false
+ t.column :parent_id, :integer, :null => false
+ end
+ add_index :changeset_parents, [:changeset_id], :unique => false, :name => :changeset_parents_changeset_ids
+ add_index :changeset_parents, [:parent_id], :unique => false, :name => :changeset_parents_parent_ids
+ end
+
+ def self.down
+ drop_table :changeset_parents
+ end
+end