Project

sequenceid

0.02
No release in over 3 years
Low commit activity in last 3 years
For SaaS applications, there are times when we dont want to show the resource id to the user since its being shared with multiple companies that have signed up. And for scenarios where we want the URL to show numbers and not worded URL's like what friendly_id provide, this is the gem for you! It'll create id's sequentially starting from 1 for each relation parent/nested resource relation definedi\n Feel free to get in touch for any specific questions until the help, support group and readme are not done at info@7vals.com \n http://www.7vals.com
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
 Dependencies
 Project Readme

SequenceId

SequenceId is the gem for Rails 3 that allows for creating URL permalinks that start from 1 and increment in a continuum. As an example for a SaaS based accounting application using SequenceId, you'll have the first three URL's for a new signup like:

http://company1.7vals.com/invoices/1
http://company1.7vals.com/invoices/2
http://company1.7vals.com/invoices/3

instead of:

http://company1.7vals.com/invoices/11232
http://company1.7vals.com/invoices/11240 #notice a jump of 8 id's due to other companies creating their invoices
http://company1.7vals.com/invoices/11242

SequenceId Features

SequenceId is a fairly straight forward gem and you need to ensure only ONE condition Resource with sequenceid must be a NESTED resource

Back to our original example, if you want invoices to start from 1 for each new company, the Invoice RESOURCE is nested to the Company RESOURCE. The gem will check for the relationhip in the database (Invoice table in this case) and ensure the sequence_num (SequenceId column created in the table) and the parent resource_id are a secondary compound key in the nested resource's table.

At no point is the sequence_num changed once its assigned since it will serve as one of the columns of the compound secondary key. If you ever do rollback the migration, be careful since re-running the migration might result in a different sequence_num if a nested resource is deleted.

SequenceId is compatible with Active Record 3.0.

Docs, Info and Support

Rails Quickstart

rails new my_app

cd my_app

# add to Gemfile
gem "sequenceid"

bundle install

rails generate sequenceid <parent resource> <nested resource> #eg rails generate sequenceid company invoice 

rake db:migrate

# edit app/controller/invoices_controller.rb
# :id is NO LONGER a unique identifier since its the sequence_num, so you MUST edit the resource find in each of the actions (or create a before filter)
@company = Company.find(params[:company_id]) # or Company.find_by_name(request.subdomain)
@invoice = @company.invoices.find_by_sequence_num!(params[:id])

rails server

#i assuming you have 7vals mapped to localhost in your host file

GET http://company1.7vals.com:3000/invoices/1
Get http://company2.7vals.com:3000/invoices/1

STI

Supports Single Table Inheritance. Follow the above given steps in the base class, and all inherited STI classes for the model will share the sequence id generation. ie If base model is Animal, and STI are Dog and Cat, then the sequence numbers will be unique to animal. Meaning given a sequence number, you could identify either an animal uniquely whether it be a dog or a cat.

Bugs

Please report them on the Github issue tracker for this project.

If you have a bug to report, please include the following information:

  • Version information for SequenceId, Rails and Ruby.
  • Stack trace and error message.
  • Any snippets of relevant model, view or controller code that shows how your are using SequenceId

Credits

SequenceId was create by Syed Ali @ 7vals

Special thanks to

for serving as a template on certain best practices.

Thanks!

Copyright (c) 2011, released under the MIT license.