No commit activity in last 3 years
No release in over 3 years
ActiveRecord, MongoMapper and general tools for generating unique values e.g. api keys and tokens.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

Runtime

 Project Readme

Unique Generator Build Status Dependency Status

Introduction

Unique Generator is a plugin for ActiveRecord and MongoMapper which makes it simple to generate unique fields and unique tokens e.g. for invites, api keys and the like.

Unique Generator is only available for Rails 3.0+.

Installation

Installing Unique Generator is simple, just add the following to your Gemfile:

gem 'unique_generator', '~> 1.0'

We'll automatically hook into ActiveRecord and MongoMapper via a railtie, adding three methods.

Usage

Unique Generator defines a very simple method, adding only four methods:

  • YourModelClass.generate_random(length = 32) - Generates a case sensitive field with size characters.
  • YourModelClass.generate_unique(length = 32, &block) - Taking a block which defines the predicate of a given value, it will generate a random toke of the specified length until the block returns true.
  • YourModelClass#unique_field?(name) - Called on an instance, tells you whether that instances value for a given field is unique in the database.

And finally, for most people, the only method that matters:

  • YourModelClass#generate_unique_field!(name, length = 32) - Generates a random token of the specified length, combining the above methods to ensure it has a unique value.

Note: Please keep in mind, in your migration your field accepting a random token should ideally be case sensitive.

Example

As a simple example, say we want to generate a unique invite token on a model, to do this, we'd do something like:

class Invite < ActiveRecord::Base

  before_save :generate_invite_token

  def generate_invite_token
    generate_unique_field! :token, 32 if token.blank?
  end

end

Contributors

Contributing

We encourage all community contributions. Keeping this in mind, please follow these general guidelines when contributing:

  • Fork the project
  • Create a topic branch for what you’re working on (git checkout -b awesome_feature)
  • Commit away, push that up (git push your_remote awesome_feature)
  • Create a new GitHub Issue with the commit, asking for review. Alternatively, send a pull request with details of what you added.
  • Once it’s accepted, if you want access to the core repository feel free to ask! Otherwise, you can continue to hack away in your own fork.

Other than that, our guidelines very closely match the GemCutter guidelines here.

(Thanks to GemCutter for the contribution guide)

License

RocketPants is released under the MIT License (see the license file) and is copyright Filter Squad, 2012.