diff --git a/app/models/journal.rb b/app/models/journal.rb index 8070d78bb1a6dbee7e03ba41901fba899efb3aaa..0b807fb2dfa3f63012b2729bf27fc5115e76ee80 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 b87f63a6b583e943e8eaf69c459fc3045c28ade4..9c50cb8a03fcfc4a6b9681e96fd75e16eb41d40d 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