Sha256: bad5bd9fbfbc03658448d98ab7dfddb94fea44836befa1e63a810a1cb2cf69a8

Contents?: true

Size: 1.03 KB

Versions: 1

Compression:

Stored size: 1.03 KB

Contents

# coding: UTF-8
module Rescue
  module Controller
    class Action

      def self.define object, clazz, var_sym, params_sym
        object.send(:define_method, :new_call) do
          instance_variable_set(var_sym, clazz.new)
        end
        object.send(:define_method, :find_call) do
          id   = find_params[Rescue.config.primary_key]
          instance_variable_set(var_sym, clazz.find(id))
        end
        object.send(:define_method, :create_call) do
          instance_variable_set(var_sym, clazz.new(send(params_sym)))
          instance_variable_get(var_sym).save!
        end
        object.send(:define_method, :update_call) do
          find_call
          instance_variable_get(var_sym).attributes = send(params_sym)
          instance_variable_get(var_sym).save!
        end
        object.send(:define_method, :delete_call) do
          find_call
          instance_variable_get(var_sym).destroy!
        end
        object.send(:private, :new_call, :find_call, :create_call, :update_call, :delete_call)
      end

    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rescue-dog-0.3.1 lib/rescue/controllers/action.rb