DataMapper::Is::Remixable

Public Class Methods

included(base) click to toggle source

Adds remixer methods to DataMapper::Resource

# File lib/dm-is-remixable/is/remixable.rb, line 16
def self.included(base)
  base.send(:include,RemixerClassMethods)
  base.send(:include,RemixerInstanceMethods)
end

Public Instance Methods

is_remixable(options={}) click to toggle source

Description

Adds RemixeeClassMethods and RemixeeInstanceMethods to any model that is: remixable

Examples

class User #Remixer

remixes Commentable
remixes Vote

end

module Commentable #Remixable

include DataMapper::Resource

is :remixable,
  :suffix => "comment"

end

module Vote #Remixable

include DataMapper::Resource

is :remixable

Notes

These options are just available for whatever reason your Remixable Module name
might not be what you'd like to see the table name and property accessor named.
These are just configurable defaults, upon remixing the class_name and accessor there
take precedence over the defaults set here

Options

:suffix   <String>
          Table suffix, defaults to YourModule.name.downcase.singular
          Yields table name of remixer_suffix; ie user_comments, user_votes
# File lib/dm-is-remixable/is/remixable.rb, line 51
def is_remixable(options={})
  extend  DataMapper::Is::Remixable::RemixeeClassMethods
  include DataMapper::Is::Remixable::RemixeeInstanceMethods
  @is_remixable = true

  # support clean suffixes for nested modules
  inflector = DataMapper::Inflector
  default_suffix = inflector.demodulize(self.name)
  default_suffix = inflector.singularize(default_suffix)
  default_suffix = inflector.underscore(default_suffix)
  suffix(options.delete(:suffix) || default_suffix)
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.