0.0
No release in over a year
A helpful collection of utitility for rails application
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

~> 1.13.0
>= 7.0.2.3
 Project Readme

AegisSupport

Aegis Support is a collection of utility classes and library extensions that were found useful for the Rails framework

Usage

AegisSupport::SecureNumber

A module with has_secure_number method for generate unique numbers

# Database Schema:
# 
# Order(
#   order_no: string,
#   order_no_with_prefix: string,
#   order_no_with_suffix: string,
#   order_no_with_specific_length: string
# )
class Order < ActiveRecord::Base
  include AegisSupport::SecureNumber
  
  # replace above column with what your want 
  has_secure_number :order_no
  has_secure_number :order_no_with_prefix, prefix: "PN_"
  has_secure_number :order_no_with_suffix, suffix: "_SN"
  has_secure_number :order_no_with_specific_length, length: 16
end

order = Order.new
order.save

order.order_no # 15103771760966048900
order.order_no_with_prefix # PN_93550490115056646751
order.order_no_with_suffix # 26931151941756843999_SN
order.order_no_with_specific_length # 9124679044244949

SecureRandom.random_number is used to generate the random numeric string. when the result's length is less than the specific(default is 20), some leading zeros will be added to the number to make its width equal to the length. prefix and suffix are not included in the calculation of length.

when the length is long enough, The collisions are highly unlikely. like the has_secure_token in ActiveRecord, it's still possible generate a race condition in the database in the same way that validates_uniqueness_of can. You're encouraged to add a unique index in the database to deal with this even more unlikely scenario

Installation

Add this line to your application's Gemfile:

gem "aegis_support"

And then execute:

$ bundle

Or install it yourself as:

$ gem install aegis_support

Contributing

Contribution directions go here.

License

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