From 1fae552c8f5f13a75f0073ee6b2546e2b6c64a16 Mon Sep 17 00:00:00 2001
From: Eric Davis <edavis@littlestreamsoftware.com>
Date: Fri, 8 Jul 2011 12:43:03 -0700
Subject: [PATCH] [#467] Fix Journal#journaled to prevent uninitialized
 constant Journal::Journaled

---
 app/models/journal.rb     | 7 ++++++-
 test/unit/journal_test.rb | 7 +++++++
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/app/models/journal.rb b/app/models/journal.rb
index 8070d78bb..0b807fb2d 100644
--- a/app/models/journal.rb
+++ b/app/models/journal.rb
@@ -23,7 +23,12 @@ class Journal < ActiveRecord::Base
 
   # Make sure each journaled model instance only has unique version ids
   validates_uniqueness_of :version, :scope => [:journaled_id, :type]
-  belongs_to :journaled, :touch => true
+
+  # Define a default class_name to prevent `uninitialized constant Journal::Journaled`
+  # subclasses will be given an actual class name when they are created by aaj
+  #
+  #  e.g. IssueJournal will get :class_name => 'Issue'
+  belongs_to :journaled, :touch => true, :class_name => 'Journal'
   belongs_to :user
 
   # ActiveRecord::Base#changes is an existing method, so before serializing the +changes+ column,
diff --git a/test/unit/journal_test.rb b/test/unit/journal_test.rb
index b87f63a6b..9c50cb8a0 100644
--- a/test/unit/journal_test.rb
+++ b/test/unit/journal_test.rb
@@ -94,4 +94,11 @@ class JournalTest < ActiveSupport::TestCase
 
     assert_not_equal start, @issue.reload.updated_on
   end
+
+  test "accessing #journaled on a Journal should not error (parent class)" do
+    journal = Journal.new
+    assert_nothing_raised do
+      assert_equal nil, journal.journaled
+    end
+  end
 end
-- 
GitLab