0.05
Low commit activity in last 3 years
A long-lived project that still receives updates
Automaticaly increments an ActiveRecord column
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

auto_increment

CI status

Code Climate

auto_increment provides automatic incrementation for a integer or string fields in Rails.

Installation

You can use auto_increment as a gem from Rails 4.2 to Rails 6.1.

To use the gem version, put the following gem requirement in your Gemfile:

gem "auto_increment"

Usage

To work with a auto increment column you used to do something like this in your model:

before_create :set_code
def set_code
  max_code = Operation.maximum(:code)
  self.code = max_code.to_i + 1
end

Looks fine, but not when you need to do it over and over again. In fact auto_increment does it under the cover.

All you need to do is this:

auto_increment :code

And your code field will be incremented

Customizing

So you have a different column or need a scope. auto_increment provides options. You can use it like this:

auto_increment :letter, scope: [:account_id, :job_id], model_scope: :in_account, initial: 'C', force: true, lock: false, before: :create

First argument is the column that will be incremented. Can be integer or string.

  • scope: you can define columns that will be scoped and you can use as many as you want (default: nil)
  • model_scope: you can define model scopes that will be executed and you can use as many as you want (default: nil)
  • initial: initial value of column (default: 1)
  • force: you can set a value before create and auto_increment will not change that, but if you do want this, set force to true (default: false)
  • lock: you can set a lock on the max query. (default: false)
  • before: you can choose a different callback to be used (:create, :save, :validation) (default: create)

Compatibility

Tested with Rails 6.1, 6 in Ruby 2.7.7. Tested with Rails 7.1, 7, 6.1, 6 in Ruby 3.2.2.

For older versions, use version 1.5.2.

License

MIT License