module Frenchy::Veneer::ClassMethods

Public Class Methods

model_name() click to toggle source
# File lib/frenchy/veneer.rb, line 25
def self.model_name
  ActiveModel::Name.new(self, nil, @model.to_s.camelize)
end
table_name() click to toggle source
# File lib/frenchy/veneer.rb, line 29
def self.table_name
  @model.to_s.pluralize
end

Public Instance Methods

veneer(options={}) click to toggle source

Macro to establish a veneer for a given model

# File lib/frenchy/veneer.rb, line 19
def veneer(options={})
  options.stringify_keys!
  @model = options.delete("model") || raise(Frenchy::Error, "Veneer must specify a model")
  extend ActiveModel::Naming

  class_eval do
    def self.model_name
      ActiveModel::Name.new(self, nil, @model.to_s.camelize)
    end

    def self.table_name
      @model.to_s.pluralize
    end
  end

  define_method(:record_key) do
    raise(Frenchy::Error, "No primary key is specified") unless respond_to?(:to_param)
    "#{self.class.table_name}/#{to_param}"
  end
end