Module: Airbed::Resources::ClassMethods

Defined in:
lib/airbed.rb

Instance Method Summary collapse

Instance Method Details

#Resource(model_class, options = {}) ⇒ Object

Make a controller into a resource.

Just do

module Camping::Controllers
  class Users < Resource User; end
end

or maybe something more complex

module Camping::Controllers
  class Users < Resource User, :show_options => {:include => [:achievements]}
    def show(user)
      user.tweak!
      super
    end
  end
end


250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
# File 'lib/airbed.rb', line 250

def Resource(model_class,options={})

  class_name = model_class.to_s.demodulize
  name = options[:name] || class_name.underscore.pluralize

  r = @r
  u = options[:urls] || ["/#{name}", "/#{name}/(\\d+)", "/#{name}/(\\d+)/(.+)"]

  Class.new(Airbed::Resources::Resty) {
    meta_def(:model_class) { model_class }
    meta_def(:options) { options }
    meta_def(:urls) { u }
    meta_def(:inherited){|x| r << x}
  }
end