Sha256: 33ac5aed9ae3168b0081186bbb7ccbc2f12c608eaafcb3ae0bbc5175220f9944

Contents?: true

Size: 1.82 KB

Versions: 7

Compression:

Stored size: 1.82 KB

Contents

module Rows::Resources

  def set_resources(rows = nil)
    rows ||= model_class.all
    instance_variable_set("@#{model_symbol_plural}", rows)
    @rows = rows
  end

  def set_resource(row = nil)
    row ||= model_class.find_by_id(params[:id].to_i)
    instance_variable_set("@#{model_symbol}", row)
    @row = row
  end

  def resources
    @rows ||= set_resources
  end

  def resource
    @row ||= set_resource
  end

 private
# low level resource methods
# can be monkey patched
  def resource_new
    if params[model_symbol]
      set_resource model_class.new(resource_params)
    else
      set_resource model_class.new
    end
  end

  def resource_create
    resource_new
    resource.save
  end

  def resource_update
    if Rails::VERSION::MAJOR >= 4
#      return true  unless params[model_symbol]
      resource.update(resource_params)
    else
      resource.update_attributes(resource_params)
    end
  end

  def resource_destroy
    resource.destroy
  end

  def resource_columns
    return model_class.column_headers  if model_class.respond_to?(:column_headers)
    return ['to_s']  unless model_class.respond_to?(:content_columns)
    ['id'] + model_class.content_columns.collect{|c| c.name }
  end

  def resource_whitelist
    raise "RowsController requires private method 'resource_whitelist' in controller <#{params[:controller]}>"
  end

  # Never trust parameters from the scary internet, only allow the white list through.
  def resource_params
    permits = resource_whitelist
    if params.respond_to?(:require)
      params.require(model_symbol).permit(permits)
    else
      pars = params[model_symbol] || {}
      pars.keys.each { |x|
	x = x.to_sym
	unless permits.include?(x) || permits.include?({x => []})
	  pars.delete(x)
	  p "** WARNING: model <#{model_name}> dropping params <#{x}>"
	end
      }
      pars
    end
  end

end

Version data entries

7 entries across 6 versions & 1 rubygems

Version Path
rows_controller-2.2.2 lib/rows/resources.rb.bak
rows_controller-2.2.1 lib/rows/resources.rb
rows_controller-2.2.0 lib/rows/resources.rb
rows_controller-2.2.0 lib/rows/resources.rb.bak
rows_controller-2.1.3 lib/rows/resources.rb
rows_controller-2.1.2 lib/rows/resources.rb
rows_controller-2.1.0 lib/rows/resources.rb