Module: RailsStuff::ResourcesController::ResourceHelper

Defined in:
lib/rails_stuff/resources_controller/resource_helper.rb

Overview

Defines resource helper and finder method.

Instance Method Summary collapse

Instance Method Details

#resource_helper(resource_name, **options) ⇒ Object

Defines protected helper method. Ex. for ‘:user`

helper_method :user

def user
  @user ||= User.find params[:user_id]
end

#### Options

  • ‘class` - class name, default to `resource_name.classify`

  • ‘param` - param name, default to `resource_name.foreign_key`



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/rails_stuff/resources_controller/resource_helper.rb', line 17

def resource_helper(resource_name, **options)
  helper_method resource_name, :"#{resource_name}?"
  resource_name = resource_name.to_s
  class_name = options[:class] || resource_name.classify
  param_key = options[:param] || resource_name.foreign_key

  class_eval <<-RUBY, __FILE__, __LINE__ + 1
    protected

    def #{resource_name}
      @#{resource_name} ||= #{class_name}.find(params[:#{param_key}])
    end

    def #{resource_name}?
      params.key?(:#{param_key})
    end
  RUBY
end