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