From d185921d9035a0f3a564e978953d2d476bc5e750 Mon Sep 17 00:00:00 2001 From: Denny Mueller Date: Tue, 23 Apr 2019 18:35:08 +0200 Subject: [PATCH] remove abstract class check and restore old behavior of v4.1.1 but keep the optional no_direct_assignment functiuonality --- lib/aasm/base.rb | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/lib/aasm/base.rb b/lib/aasm/base.rb index ab772da9..3f6fda52 100644 --- a/lib/aasm/base.rb +++ b/lib/aasm/base.rb @@ -54,25 +54,16 @@ def initialize(klass, name, state_machine, options={}, &block) # make sure to raise an error if no_direct_assignment is enabled # and attribute is directly assigned though aasm_name = @name - return true if should_not_define_method(klass) && !@state_machine.config.no_direct_assignment - klass.send :define_method, "#{@state_machine.config.column}=", ->(state_name) do - if self.class.aasm(:"#{aasm_name}").state_machine.config.no_direct_assignment - raise AASM::NoDirectAssignmentError.new( - 'direct assignment of AASM column has been disabled (see AASM configuration for this class)' - ) - else - super(state_name) + + if @state_machine.config.no_direct_assignment + @klass.send(:define_method, "#{@state_machine.config.column}=") do |state_name| + if self.class.aasm(:"#{aasm_name}").state_machine.config.no_direct_assignment + raise AASM::NoDirectAssignmentError.new('direct assignment of AASM column has been disabled (see AASM configuration for this class)') + end end end end - def should_not_define_method(klass) - (klass.methods.include?(:abstract_class) && - klass.abstract_class) || - (klass.superclass.methods.include?(:abstract_class) && - klass.superclass.abstract_class) - end - # This method is both a getter and a setter def attribute_name(column_name=nil) if column_name