myexperiment-hackers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[myexperiment-hackers] [2612] trunk/lib/explicit_versioning.rb: added pr


From: noreply
Subject: [myexperiment-hackers] [2612] trunk/lib/explicit_versioning.rb: added properties to versioned model before cloning attributes and added " extra_attributes"
Date: Mon, 27 Jun 2011 08:53:46 -0400 (EDT)

Revision
2612
Author
dgc
Date
2011-06-27 08:53:45 -0400 (Mon, 27 Jun 2011)

Log Message

added properties to versioned model before cloning attributes and added "extra_attributes"

Modified Paths

Diff

Modified: trunk/lib/explicit_versioning.rb (2611 => 2612)


--- trunk/lib/explicit_versioning.rb	2011-06-27 11:23:52 UTC (rev 2611)
+++ trunk/lib/explicit_versioning.rb	2011-06-27 12:53:45 UTC (rev 2612)
@@ -15,7 +15,7 @@
           send :include, Jits::Acts::ExplicitVersioning::ActMethods
           
           cattr_accessor :versioned_class_name, :versioned_foreign_key, :versioned_table_name, :versioned_inheritance_column, 
-            :version_column, :version_sequence_name, :non_versioned_columns, :file_columns, :white_list_columns, :revision_comments_column, 
+            :version_column, :version_sequence_name, :non_versioned_columns, :file_columns, :extra_attributes, :white_list_columns, :revision_comments_column, 
             :version_association_options, :timestamp_columns, :sync_ignore_columns
             
           self.versioned_class_name         = options[:class_name]  || "Version"
@@ -25,6 +25,7 @@
           self.version_column               = options[:version_column]     || 'version'
           self.non_versioned_columns        = [self.primary_key, inheritance_column, 'version', 'lock_version', versioned_inheritance_column, version_column]
           self.file_columns                 = options[:file_columns] || []
+          self.extra_attributes             = options[:extra_attributes] || []
           self.white_list_columns           = options[:white_list_columns] || []
           self.revision_comments_column     = options[:revision_comments_column]  || "revision_comments"
           self.version_association_options  = {
@@ -159,10 +160,10 @@
           # Saves a version of the model in the versioned table. This is called in the after_create callback by default
           def save_version_on_create(revision_comment=nil)
             rev = self.class.versioned_class.new
-            self.clone_versioned_model(self, rev)
             rev.version = send(self.class.version_column)
             rev.send("#{self.class.revision_comments_column}=", revision_comment)
             rev.send("#{self.class.versioned_foreign_key}=", self.id)
+            self.clone_versioned_model(self, rev)
             saved = rev.save
             
             if saved
@@ -282,7 +283,7 @@
           
           # Returns an array of attribute keys that are versioned.  See non_versioned_columns
           def versioned_attributes
-            self.attributes.keys.select { |k| !self.class.non_versioned_columns.include?(k) }
+            self.attributes.keys.select { |k| !self.class.non_versioned_columns.include?(k) } + extra_attributes
           end
         
         module ClassMethods

reply via email to

[Prev in Thread] Current Thread [Next in Thread]