Defect #19957

acts_as_versioned not compatible with ActiveRecord 4.2.1

Added by taha mohammed el kahlaoui over 2 years ago. Updated over 2 years ago.

Status:ClosedStart date:
Priority:NormalDue date:
Assignee:Jean-Philippe Lang% Done:

0%

Category:Rails support
Target version:3.0.4
Resolution:Fixed Affected version:3.0.3

Description

Method type_cast is now renamed to type_cast_from_database.


Related issues

Related to Redmine - Feature #19959: use paper_trail gem instead of bundled acts_as_versioned New
Related to Redmine - Defect #24348: acts_as_versioned use old style (Rails 2.x) of method cal... Closed

Associated revisions

Revision 14294
Added by Jean-Philippe Lang over 2 years ago

acts_as_versioned not compatible with ActiveRecord 4.2.1 (#19957).

History

#1 Updated by Toshi MARUYAMA over 2 years ago

https://github.com/redmine/redmine/pull/55

I noticed exceptions when plugin use acts_as_versioned because of ActiveRecord.

#2 Updated by Toshi MARUYAMA over 2 years ago

It seems acts_as_versioned is dead.
https://github.com/JoelJuliano/acts_as_versioned

I think we would better use paper_trail gem instead.
https://github.com/airblade/paper_trail

#3 Updated by Toshi MARUYAMA over 2 years ago

  • Target version set to 3.0.4

https://patch-diff.githubusercontent.com/raw/redmine/redmine/pull/55.diff

diff --git a/lib/plugins/acts_as_versioned/lib/acts_as_versioned.rb b/lib/plugins/acts_as_versioned/lib/acts_as_versioned.rb
index 618cf07..224a0c7 100644
--- a/lib/plugins/acts_as_versioned/lib/acts_as_versioned.rb
+++ b/lib/plugins/acts_as_versioned/lib/acts_as_versioned.rb
@@ -447,7 +447,7 @@ def clear_altered_attributes

           def write_changed_attribute(attr_name, attr_value)
             # Convert to db type for comparison. Avoids failing Float<=>String comparisons.
-            attr_value_for_db = self.class.columns_hash[attr_name.to_s].type_cast(attr_value)
+            attr_value_for_db = self.class.columns_hash[attr_name.to_s].type_cast_from_database(attr_value)
             (self.altered_attributes ||= []) << attr_name.to_s unless self.changed?(attr_name) || self.send(attr_name) == attr_value_for_db
             write_attribute(attr_name, attr_value_for_db)
           end

#4 Updated by Toshi MARUYAMA over 2 years ago

  • Related to Feature #19959: use paper_trail gem instead of bundled acts_as_versioned added

#5 Updated by Jean-Philippe Lang over 2 years ago

  • Status changed from New to Needs feedback

Can we have a test that triggers this error in Redmine?

#6 Updated by Toshi MARUYAMA over 2 years ago

Jean-Philippe Lang wrote:

Can we have a test that triggers this error in Redmine?

I think we don't use this code, so we cannot test.
We cannot manage unused code of bundled gem, so we should use maintained gem instead (#19959).

#7 Updated by Jean-Philippe Lang over 2 years ago

  • Category set to Rails support
  • Status changed from Needs feedback to Resolved
  • Resolution set to Fixed

Patch committed.

#8 Updated by Jean-Philippe Lang over 2 years ago

  • Status changed from Resolved to Closed
  • Assignee set to Jean-Philippe Lang

#9 Updated by Toshi MARUYAMA over 1 year ago

  • Related to Defect #24348: acts_as_versioned use old style (Rails 2.x) of method call for #all added

Also available in: Atom PDF