Skip to content

jbueler/entity_status

Repository files navigation

entity_status

Gem Version

Ruby Gem for adding status helper methods to an activerecord model.

Installlation

	gem 'entity_status'

Bundle install

This gem will modify a string column in your database and is configurable to which column you want to use. To change the column used for the status call entity_status <#column_name#>

Include module in your Model, this will get you default statuses of pending, open, closed

	class Post < ActiveRecord::Base
		include EntityStatus # the default column EntityStatus will look for is `status`
	end

You can configure custom statuses per model by calling entity_status in your Model:

	class Post < ActiveRecord::Base
		include EntityStatus
		entity_status :status, [:incomplete,:complete]
	end

You can configure multiple status columns per model by calling entity_status multiple times in your Model:

	class Post < ActiveRecord::Base
		include EntityStatus
		entity_status :status, [:incomplete,:complete]
		entity_status :moderation_status, [:pending,:approved,:rejected]
	end

Adding soft destroy

	class Post < ActiveRecord::Base
		include EntityStatus
		entity_status :status, [:incomplete,:complete], {destroyed_status: 'destroyed'}
	end

All of the normal helpers will exist with the destroyed_status with an additional helper on the entity for destroyed_status. It will also create a default_scope to not include the soft destroyed entires by default.

	Post.destroyed_status #=> 'destroyed'
	
	Post.all.count #=> 3
	Post.unscoped.all.count #=> 9
	Post.destroyed #=> will return the active record relation for all soft destroyed entitities
	Post.destroyed.count #=> 6

Using EntityStatus

You can now start using the helper methods:

	Post.incomplete #=> will return all Post entities with status == 'incomplete'
	p = Post.incomplete.first
	p.complete? #=> false
	p.complete #=> returns p with p.status == 'complete'
	p.complete? #=> true
	
	// USING THE SECOND ENTITY STATUS
	p.approved #=> returns p with p.moderation_status == 'approved'		
	if(p.approved? && p.complete?)
		// THIS IS APPROVED AND COMPLETED
	elsif(!p.approved?)
		// THIS IS NOT APPROVED
	end

About

Ruby Gem for adding status helper methods to an activerecord model

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages