module CRUDRequest

Public Instance Methods

create_for(klass) click to toggle source
# File lib/rack/requests/crud.rb, line 14
def create_for klass
  object = klass.create( @params )

  return Response.ok if object.valid?

  Response.unprocessable_entity_for object.errors.full_messages
end
delete_for(klass) click to toggle source
# File lib/rack/requests/crud.rb, line 64
def delete_for klass
  object = klass.find( @url_params[ :id ])
  
  if object.nil?  
    Log.info "#{ __method__ } #{ klass } could not delete id #{ @url_params[ :id ]}"
  else
    object.delete
  end

  Response.ok
end
edit_for(klass) click to toggle source
# File lib/rack/requests/crud.rb, line 41
def edit_for klass
  id = @url_params[ :id ]
  attributes = klass.find( id ).attributes
  
  submit_method = "putObject('#{ klass.to_s.downcase }', '#{ id }')"
  data = { id:id, 
           instance:attributes, 
           submit_method:submit_method,
           header:"Edit #{ klass }" }

  Response.ok_for render( klass.to_s.downcase, :form, data )
end
get_for(klass) click to toggle source
# File lib/rack/requests/crud.rb, line 22
def get_for klass
  instances = klass.all
                   .map( &:attributes )
                   .sort_by{| instance | instance[ :display_name ]}

  fields = klass.new.editable_fields
  count  = instances.count
  data   = { fields:fields, instances:instances, count:count }
  Response.ok_for render( klass.to_s.downcase, :all, data )
end
new_for(klass) click to toggle source
# File lib/rack/requests/crud.rb, line 2
def new_for klass
  fields = klass.new.editable_fields
  attributes = Hash[ *fields.map{| f | [ f.to_sym, '' ]}.flatten ]
  
  submit_method = "postObject('#{ klass.to_s.downcase }')"
  data = { instance:attributes            , 
           submit_method:submit_method    ,
           header:"Create New #{ klass }" }

  Response.ok_for render( klass.to_s.downcase, :form, data )
end
put_for(klass) click to toggle source
# File lib/rack/requests/crud.rb, line 54
def put_for klass
  instance = klass.find( @url_params[ :id ])
  
  if instance.update_attributes( @params )
    return Response.ok
  end

  Response.unprocessable_entity_for instance.errors.full_messages
end
show_for(klass) click to toggle source
# File lib/rack/requests/crud.rb, line 33
def show_for klass
  attributes = klass.find( @url_params[ :id ]).attributes

  data = { id:attributes[ '_id' ], instance:attributes }

  Response.ok_for render( klass.to_s.downcase, :show, data )
end