module RailsStuff::ResourcesController::BasicHelpers

Protected Instance Methods

after_destroy_url() click to toggle source

URL to be used in `Location` header & to redirect after resource was destroyed. Default to index_url.

# File lib/rails_stuff/resources_controller/basic_helpers.rb, line 107
def after_destroy_url
  index_url
end
after_save_url() click to toggle source

URL to be used in `Location` header & to redirect to after resource was created/updated. Default uses `self.class.after_save_action`.

# File lib/rails_stuff/resources_controller/basic_helpers.rb, line 96
def after_save_url
  action = self.class.after_save_action
  if action == :index
    index_url
  else
    url_for action: action, id: resource
  end
end
authorize_resource!() click to toggle source

Default authorization implementation. Uses `#authorize!` method which is not implemented here (use CanCan or other implementation).

# File lib/rails_stuff/resources_controller/basic_helpers.rb, line 135
def authorize_resource!
  action = action_name.to_sym
  target =
    case action
    when :index, :create, :new then self.class.resource_class.new
    else resource
    end
  authorize!(action, target)
end
build_resource(attrs = resource_params) click to toggle source

Instantiate resource with attrs from `resource_params`.

# File lib/rails_stuff/resources_controller/basic_helpers.rb, line 73
def build_resource(attrs = resource_params)
  @_resource = source_relation.new(attrs)
end
collection() click to toggle source

Accesss resources collection.

# File lib/rails_stuff/resources_controller/basic_helpers.rb, line 53
def collection
  @_collection ||= source_for_collection
end
create_resource() click to toggle source

Builds and saves resource.

# File lib/rails_stuff/resources_controller/basic_helpers.rb, line 78
def create_resource
  build_resource
  resource.save
end
flash_errors!(errors = resource.errors, max_length = 100) click to toggle source

Flashes errors in a safe way. Joins `full_messages` and truncates result to avoid cookies overflow.

# File lib/rails_stuff/resources_controller/basic_helpers.rb, line 90
def flash_errors!(errors = resource.errors, max_length = 100)
  flash[:error] = errors.full_messages.join("\n").truncate(max_length) if errors.any?
end
index_url() click to toggle source

Extracted from after_save_url and after_destroy_url because they use same value. It's easier to override this urls in one place.

# File lib/rails_stuff/resources_controller/basic_helpers.rb, line 113
def index_url
  url_for action: :index
end
permitted_attrs() click to toggle source

Default permitted attributes are taken from class method. Override it to implement request-based permitted attrs.

# File lib/rails_stuff/resources_controller/basic_helpers.rb, line 128
def permitted_attrs
  self.class.permitted_attrs
end
resource() click to toggle source

Resource found by `params`

# File lib/rails_stuff/resources_controller/basic_helpers.rb, line 68
def resource
  @_resource ||= source_relation.find params[:id]
end
resource_params() click to toggle source

Override it to return permited params. By default it returns params using `self.class.resource_param_name` and `permitted_attrs` methods.

# File lib/rails_stuff/resources_controller/basic_helpers.rb, line 119
def resource_params
  @_resource_params ||= begin
    key = self.class.resource_param_name
    params.permit(key => permitted_attrs)[key] || params.class.new.permit!
  end
end
source_for_collection() click to toggle source

End-point relation to be used as source for `collection`.

# File lib/rails_stuff/resources_controller/basic_helpers.rb, line 58
def source_for_collection
  source_relation
end
source_relation() click to toggle source

Relation which is used to find and build resources.

# File lib/rails_stuff/resources_controller/basic_helpers.rb, line 63
def source_relation
  self.class.resource_class
end
update_resource(attrs = resource_params) click to toggle source

Updates resource with `resource_params`.

# File lib/rails_stuff/resources_controller/basic_helpers.rb, line 84
def update_resource(attrs = resource_params)
  resource.update(attrs)
end