Skip to content

johno/archivable

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

57 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

archivable Build Status

Archive your Rails models rather than delete them. This provides the archiving functionality app so you can do the following:

In your models
user.archived? #=> false user.archive! #=> true user.archived? #=> true user.unarchive! #=> true user.archived? #=> false
In your views
<% if user.archived? %> <%= link_to :Archive, archive_user_path(user) %> <% else %> <%= link_to :Unarchive, archive_user_path(user) %> <% end %>

Installation

Add this line to your application's Gemfile:

gem 'archivable'

And then execute:

$ bundle 

Or install it yourself as:

$ gem install archivable 

Usage

Database Migration

First, you need to add the archived column to your model (which we we call User for this example):

$ rails g migration add_archived_to_users archived:boolean $ rake db:migrate 

NOTE: remember to edit the migration and set :archived column to default to false in order to simplify querying for non-archived models.

 add_column :users, :archived, :boolean, default: false 

Application Routes

In your routes file (config/routes.rb):

My::Application.routes.draw do resources :users do get archive, on: :member get archived, on: :collection end end

The Model

Next, you need to include the model concern to gain access to some handy methods.

class User < ActiveRecord::Base include Archivable::Model # ... end

The Controller

Lastly, you need to include the controller concern to handle the controller actions.

class UsersController < ApplicationController include Archivable::Controller def index @users = User.where(archived: false) end # ... end

That's it.

Now, instead of a delete link, you can do the following:

<%= link_to user.archived? ? :Unarchive : :Archive, archive_user_path(user) %> <%= link_to 'See Archived Users', archived_users_path %>

Contributing

  1. Fork it ( http://github.com/johnotander/archivable/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 new Pull Request

About

Archive your Rails models rather than delete them

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages