Skip to content

Harrisonl/randomid

Repository files navigation

Randomid

RandomId was a gem created partly due to the frustration and partly due to wanting to have a go at creating a gem. Most of the time with a rails app, every model will be referenced in the URL by http://example.com/user/1. This makes it easy for users to know exactly how many of each model you have in the database which can lead to all sorts of problems. Me - I just don't like other users knowing how many objects there are.

This gem therefore makes it so that when an object is created it will generate a randon uid up to 22 characters long that you can use anywhere in your app. For example:

#project/config/routes.rb
get 'users/:uid', to: 'users#show'

Installation

Add this line to your application's Gemfile:

gem 'randomid'

And then execute:

$ bundle

Or install it yourself as:

$ gem install randomid

Usage

Short Method

Simply run this generator to add the necessary migration and alterations to the model:

rails generate randomid model_name attribute_name token_length

Where

  • model_name = singular version of the model e.g. customers model would mean you put 'customer'
  • attribute_name = The desired randomid attribute name, e.g. UID
  • token_length = Is how long you want the token to be e.g. 5

E.g:

rails generate randomid customer uid 5

This will also add the method to the model file:

class Customer < ActiveRecord::Base
  unique_identifier :uid, 5

Long

Firstly, you need to make sure that each model you want to have a unique identifier for, you add an attribute to that model.

E.g. If I wanted the User model to have a unique identifier I would add a "uid" attribute of type string.

Note: You can name this attribute whatever you like

Next navigate to that class's model file and add the following line:

class User < ActiveRecord::Base
  unique_identifier :uid, 8
end

Where ":uid" is the attribute you created above and "8" is the length of the UID (between 1 - 22 characters).

From there, you are good to go - everytime a new object is created, a unique id will be assigned. This ID will not clash with any other values in the database

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/harrisonl/randomid. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.

License

The gem is available as open source under the terms of the MIT License.

About

Creates Unique Identifiers for models in Rails

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published