ruby on rails - Spree module decorator -


i'm using spree commerce online shop. want change behaviour during checkout process, defined in app/models/spree/order/checkout.rb inside spree gem. made checkout_decorator.rb @ same point in application.

the problem is, changes aren't loaded. , problem is, inside module inside 1 method, def self.included(klass) method. think have overwrite whole file, instead of 1 method. here decorator looks like:

checkout_decorator.rb

spree::order::checkout.module_eval   def self.included(klass)     klass.class_eval       class_attribute :next_event_transitions       class_attribute :previous_states       class_attribute :checkout_flow       class_attribute :checkout_steps        def self.define_state_machine!          # here want make changes       end        # , other methods include here       # readability, don't show them here     end   end end 

the original file checkout.rb spree gem looks this:

module spree   class order < activerecord::base     module checkout       def self.included(klass)         klass.class_eval           class_attribute :next_event_transitions           class_attribute :previous_states           class_attribute :checkout_flow           class_attribute :checkout_steps            def self.checkout_flow(&block)             if block_given?               @checkout_flow = block               define_state_machine!             else               @checkout_flow             end           end            def self.define_state_machine!              # code           end            # , other methods not shown here         end       end     end   end end 

so questions are: why not work? module_eval right way this? tried class_eval doesn't work either. how can solve this?

the module_eval method isn't going work you.

you should @ spree checkout flow documentation examples on how customize checkout flow. recommended way customizing checkout flow won't need copy/paste whole bunch of code.


Comments

  1. you need to include Spree::Order::Checkout in order_decorator.rb and use .class_eval

    ReplyDelete

Post a Comment

Popular posts from this blog

c# - must be a non-abstract type with a public parameterless constructor in redis -

c# - ReportViewer control - axd url -

ajax - PHP/JSON Login script (Twitter style) not setting sessions -