From ef1223dd3a1c6c136d7671e5ad5d14ad11d3698a Mon Sep 17 00:00:00 2001 From: Toshi MARUYAMA Date: Thu, 3 Nov 2011 08:01:41 +0000 Subject: [PATCH] scm: db: model: add parent/child relation for changesets (#5501) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 | 8 ++++++++ .../20110902000000_create_changeset_parents.rb | 14 ++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 db/migrate/20110902000000_create_changeset_parents.rb 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