]> source.dussan.org Git - redmine.git/commitdiff
scm: db: model: add parent/child relation for changesets (#5501)
authorToshi MARUYAMA <marutosijp2@yahoo.co.jp>
Thu, 3 Nov 2011 08:01:41 +0000 (08:01 +0000)
committerToshi MARUYAMA <marutosijp2@yahoo.co.jp>
Thu, 3 Nov 2011 08:01:41 +0000 (08:01 +0000)
Contributed by Jan TopiƄski.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@7710 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/changeset.rb
db/migrate/20110902000000_create_changeset_parents.rb [new file with mode: 0644]

index 3dae86ec131724b5cd8280686933fb9c6e86bb83..4f08c2e95afe28dcbdb9f17b98152b15be10ae93 100644 (file)
@@ -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 (file)
index 0000000..e679d3f
--- /dev/null
@@ -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