Before Actions

Organize your controllers by grouping your before and after filters.

Status

Gem Version Dependency Status Inline docs Code Climate Code Climate License

References

Support

Installation

Add this line to your application's Gemfile:

gem 'before_actions'

And then execute:

bundle
rails g before_actions:template

Upgrading from 1.*

bundle update before_actions
rails g before_actions:template

Then simply adjust your controllers to the new syntax

Demo

It's simple!

class ContactsController < ApplicationController

  # load and authorize resources
  before_actions do
    # listing actions
    only(:index) { @contacts = Contact.all }

    # building actions
    only(:new)    { @contact = Contact.new }
    only(:create) { @contact = Contact.new(contact_params) }

    # member actions, will raise a 404 if the model is not found
    only(:show, :edit, :update, :destroy) { @contact = Contact.find(params[:id]) }
  end

  after_actions do
    all { your_code_here }
    except(:index) { your_code_here }
  end


  around_actions do
    only(:create) do |controller, action|
      your_code
      action.call
      in_here
    end
  end

  ...

  def contact_params
    params.require(:contact).permit(:name)
  end
end

Restful Controller

resource.png

Nested Resourceful Controller

nested.png

Contributing

  1. Fork it ( https://github.com/github.com/before-actions-gem/before_actions/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Versioning

Before Actions uses Semantic Versioning 2.0.0