Sha256: 26e15d40e287ecd5e219dc7a43e57b967e11ce41d31109e9198215d589635a0e

Contents?: true

Size: 813 Bytes

Versions: 1

Compression:

Stored size: 813 Bytes

Contents

module Nusii
  class Resource

    def initialize args
      assign_attributes args
    end

    def self.class_name
      name.split("::").last
    end

    def editable_params
      editable_attributes.each_with_object({}) do |attribute, result|
        result[attribute.to_s] = self.send(attribute)
      end
    end

    def save_params
      {
        self.class.class_name.underscore.singularize => editable_params
      }
    end

  private

    def assign_attributes args
      args.each do |attribute, value|
        value = value.to_i if attribute.match(/\w+\_id$|^id$/)
        instance_variable_set("@#{attribute}", value) unless value.nil?
      end
      self
    end

    def editable_attributes
      raise NotImplementedError,
        "Each subclass must implement this method"
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
nusii-0.1.1 lib/nusii/resource.rb