Sha256: eb34915c68fbe58bdbf58960c8e0cb77c249d8c392069d41c09d912c26465114

Contents?: true

Size: 905 Bytes

Versions: 3

Compression:

Stored size: 905 Bytes

Contents

module CaseyJones
  module ActionControllerClassMethods
    def resource_attributes(*parameters)
      for action in [:show, :new, :edit, :create]
        a = "def #{action};" + ([:new, :create].include?(action) ?
          "@#{resource_class.name.underscore} = resource_class.new;" : ""
        ) +
        parameters.map{|p|
            if p.class == Hash
              meth, prm = [p.to_a.flatten[0], p.to_a.flatten[1]]
            else
              meth, prm = [p, p]
            end
            meth = meth.to_s + "="

            if prm == :current_user
              val = "current_user"
            else
              val = "params[:#{prm}]"
            end
            "resource.send(\"#{meth}\", #{val})"
          }.join(";") +
          ";#{action}!;end;"
        class_eval a
        puts a
      end
    end
  end
end
ActionController::Base.extend CaseyJones::ActionControllerClassMethods

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
casey_jones-0.0.120 lib/action_controller_extensions/action_controller_class_methods.rb
casey_jones-0.0.119 lib/action_controller_extensions/action_controller_class_methods.rb
casey_jones-0.0.118 lib/action_controller_extensions/action_controller_extensions.rb