module FormJourney::UsesSingleModel
Public Instance Methods
edit()
click to toggle source
# File lib/form_journey/uses_single_model.rb, line 10 def edit journey_params.clear! journey_params.set(:_model_object_id, value: params[:id]) redirect_to step_path(steps.first) end
editing?()
click to toggle source
# File lib/form_journey/uses_single_model.rb, line 16 def editing? model_object_id.present? end
model_object_id()
click to toggle source
# File lib/form_journey/uses_single_model.rb, line 20 def model_object_id journey_params.get(:_model_object_id) end
Private Instance Methods
model_object()
click to toggle source
# File lib/form_journey/uses_single_model.rb, line 26 def model_object @model_object ||= begin if editing? scoped_class.find(model_object_id).tap do |obj| obj.assign_attributes(model_params) end else scoped_class.new(model_params) end end end
model_params()
click to toggle source
# File lib/form_journey/uses_single_model.rb, line 52 def model_params if self.class._params_method.respond_to?(:call) self.class._params_method.call else self.send(self.class._params_method.to_sym) end end
scoped_class()
click to toggle source
# File lib/form_journey/uses_single_model.rb, line 38 def scoped_class model_class = self.class._model_class scope = self.class._model_scope return model_class unless scope if scope.respond_to?(:call) instance_exec(model_class, &scope) else messages = Array(scope) messages.reduce(model_class) do |chained_scope, message| chained_scope.send(message.to_sym) end end end