From b5b24999a32ec3913cd2f6b990b67c616ce44211 Mon Sep 17 00:00:00 2001 From: Callum Banbery Date: Thu, 24 Oct 2019 11:14:58 +0100 Subject: [PATCH] Allow for classes inside of modules --- lib/active_poro/associations.rb | 6 +++--- lib/active_poro/version.rb | 2 +- spec/active_poro_spec.rb | 24 +++++++++++++----------- 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/lib/active_poro/associations.rb b/lib/active_poro/associations.rb index 6ab4d1f..93c86ad 100644 --- a/lib/active_poro/associations.rb +++ b/lib/active_poro/associations.rb @@ -18,7 +18,7 @@ def has_many(target_name) # set the instance variable only if I am now the rightful owner instance_variable_set("@#{target_name}", members) - singular_reflection_name = self.class.name.underscore + singular_reflection_name = self.class.name.demodulize.underscore members.each do |member| current_owner = member.send(singular_reflection_name) @@ -65,7 +65,7 @@ def has_one(target_name) # define setter method define_method "#{target_name}=" do |member| - singular_reflection_name = self.class.name.underscore + singular_reflection_name = self.class.name.demodulize.underscore if member.respond_to?(singular_reflection_name) && member.send(singular_reflection_name) != self member.send "#{singular_reflection_name}=", self end @@ -84,7 +84,7 @@ def belongs_to(target_name) previous_member = instance_variable_get("@#{target_name}") instance_variable_set("@#{target_name}", member) - singular_reflection_name = self.class.name.underscore + singular_reflection_name = self.class.name.demodulize.underscore plural_reflection_name = singular_reflection_name.pluralize # add myself to reflected association diff --git a/lib/active_poro/version.rb b/lib/active_poro/version.rb index ac43ca9..f09ccda 100644 --- a/lib/active_poro/version.rb +++ b/lib/active_poro/version.rb @@ -1,3 +1,3 @@ module ActivePoro - VERSION = "0.0.6" + VERSION = "0.0.7" end diff --git a/spec/active_poro_spec.rb b/spec/active_poro_spec.rb index 6f92b7f..3224a6d 100644 --- a/spec/active_poro_spec.rb +++ b/spec/active_poro_spec.rb @@ -3,22 +3,24 @@ describe 'ActivePoro' do context 'Model' do context 'associations' do - + context 'has_one + belongs_to' do before do - class Driver < BaseTestClass - include ActivePoro::Model - has_one :car - end + module Objects + class Driver < BaseTestClass + include ActivePoro::Model + has_one :car + end - class Car < BaseTestClass - include ActivePoro::Model - belongs_to :driver + class Car < BaseTestClass + include ActivePoro::Model + belongs_to :driver + end end end - let(:driver){ Driver.new('Mike') } - let(:car){ Car.new('A') } + let(:driver){ Objects::Driver.new('Mike') } + let(:car){ Objects::Car.new('A') } it 'initializes unrelated/unassociated' do expect(car.driver).to be_nil @@ -38,7 +40,7 @@ class Car < BaseTestClass end context 'when the car is transferred to another owner/driver' do - let(:another_driver){ Driver.new('Bob') } + let(:another_driver){ Objects::Driver.new('Bob') } it 'detaches the car from the previous owner' do car.driver = driver expect(driver.car).to eq(car)