auto_increment 0.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 2d10c327e17646c875c89c2eb2c225e59085de41
4
+ data.tar.gz: 3c0c3584f65e534a755fe89e152d926135ba60a7
5
+ SHA512:
6
+ metadata.gz: 9a2973f0afd4736371b1b9b844cfb9e9b22318ef4f229d9a9a62dedb032d5dfd9c8cd2fd9489c64fb67cbc83da73bfcc091adcf943bcaca6628f27fd1cf0a09e
7
+ data.tar.gz: ee1005cd6e16fdd8b30ff6a302f05ad3ccf4e7a62ecac69d2fb33f013af7122efec2215edc2d84cd2596baa7f29e813930f7b291c604928711432ea4c06d199e
@@ -0,0 +1,53 @@
1
+ auto_increment
2
+ ==============
3
+
4
+ auto_increment provides automatic incrementation for a string or integer fields in Rails.
5
+
6
+ Installation
7
+ ------------
8
+
9
+ You can use auto_increment as a gem in Rails 3.
10
+
11
+ To use the gem version, put the following gem requirement in your `Gemfile`:
12
+
13
+ gem "auto_increment"
14
+
15
+
16
+ Usage
17
+ -----
18
+
19
+ To work with a auto increment column you used to do sometihng like this in your model:
20
+
21
+ before_create :set_code
22
+ def set_code
23
+ max_code = Operation.maximum(:code)
24
+ self.code = max_code.to_i + 1
25
+ end
26
+
27
+ Looks fine, but not when you need to do it over and over again. In fact auto_increment does it under the cover.
28
+
29
+ All you need to do is this:
30
+
31
+ auto_increment
32
+
33
+ And your code field will be incremented
34
+
35
+
36
+ ### Customizing
37
+
38
+ So you have a different column or need a scope. auto_increment provides options. You can use it like this:
39
+
40
+ auto_increment :column => :letter, :scope => [:account_id, :job_id], :initial => 'C', :force => true
41
+
42
+ * column: the column that will be incremented. Can be integer os string (default: code)
43
+ * scope: you can define columns that will be scoped and you can use as many as you want (default: nil)
44
+ * initial: initial value of column (default: 1)
45
+ * 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)
46
+
47
+
48
+ ### Compatibility
49
+
50
+ * Tested with Rails 3.0.4 in Ruby 1.8.7 and Ruby 1.9.2
51
+
52
+ ### License
53
+ MIT License. Copyright 2011 29sul Tecnologia da Informação <http://www.29sul.com.br/>
@@ -8,7 +8,7 @@ Gem::Specification.new do |s|
8
8
  s.platform = Gem::Platform::RUBY
9
9
  s.authors = ["Felipe Diesel"]
10
10
  s.email = ["felipediesel@gmail.com"]
11
- s.homepage = "http://felipediesel.com"
11
+ s.homepage = "http://github.com/felipediesel/auto_increment"
12
12
  s.summary = %q{Auto increment a string or integer field}
13
13
  s.description = %q{Automaticaly increments a string or integer field in ActiveRecord.}
14
14
 
@@ -4,19 +4,22 @@ module AutoIncrement
4
4
  def auto_increment(options = {})
5
5
  raise ArgumentError, "Hash expected, got #{options.class.name}" if not options.is_a?(Hash) and not options.empty?
6
6
 
7
- default_options = { :column => :code, :scope => nil, :initial => 1, :force => false }
8
- options = default_options.merge(options) unless options.nil?
7
+ options.reverse_merge! column: :code, scope: nil, initial: 1, force: false
9
8
 
10
- options[:scope] = [options[:scope]] if options[:scope].class != Array
9
+ options[:scope] = [ options[:scope] ] unless options[:scope].is_a? Array
11
10
 
12
- before_create "auto_increment_#{options[:column]}"
11
+ method_name = "auto_increment_#{options[:column]}"
12
+
13
+ before_create method_name
14
+
15
+ define_method method_name do
16
+ return if send(options[:column]).present? and !options[:force]
17
+
18
+ query = self.class.all
13
19
 
14
- define_method "auto_increment_#{options[:column]}" do
15
- return if self.send(options[:column]).present? and !options[:force]
16
- query = self.class.scoped
17
20
  options[:scope].each do |scope|
18
21
  if scope.present? and respond_to?(scope)
19
- query = query.where "#{scope} = ?", send(scope)
22
+ query = query.where(scope => send(scope))
20
23
  end
21
24
  end
22
25
 
@@ -1,3 +1,3 @@
1
1
  module AutoIncrement
2
- VERSION = "0.2"
2
+ VERSION = "1.0.0"
3
3
  end
metadata CHANGED
@@ -1,35 +1,25 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: auto_increment
3
- version: !ruby/object:Gem::Version
4
- hash: 15
5
- prerelease:
6
- segments:
7
- - 0
8
- - 2
9
- version: "0.2"
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
10
5
  platform: ruby
11
- authors:
6
+ authors:
12
7
  - Felipe Diesel
13
8
  autorequire:
14
9
  bindir: bin
15
10
  cert_chain: []
16
-
17
- date: 2011-03-31 00:00:00 -03:00
18
- default_executable:
11
+ date: 2014-04-30 00:00:00.000000000 Z
19
12
  dependencies: []
20
-
21
13
  description: Automaticaly increments a string or integer field in ActiveRecord.
22
- email:
14
+ email:
23
15
  - felipediesel@gmail.com
24
16
  executables: []
25
-
26
17
  extensions: []
27
-
28
18
  extra_rdoc_files: []
29
-
30
- files:
19
+ files:
31
20
  - .gitignore
32
21
  - Gemfile
22
+ - README.markdown
33
23
  - Rakefile
34
24
  - auto_increment.gemspec
35
25
  - lib/auto_increment.rb
@@ -48,41 +38,30 @@ files:
48
38
  - test/app/config/environments/test.rb
49
39
  - test/auto_increment_test.rb
50
40
  - test/test_helper.rb
51
- has_rdoc: true
52
- homepage: http://felipediesel.com
41
+ homepage: http://github.com/felipediesel/auto_increment
53
42
  licenses: []
54
-
43
+ metadata: {}
55
44
  post_install_message:
56
45
  rdoc_options: []
57
-
58
- require_paths:
46
+ require_paths:
59
47
  - lib
60
- required_ruby_version: !ruby/object:Gem::Requirement
61
- none: false
62
- requirements:
63
- - - ">="
64
- - !ruby/object:Gem::Version
65
- hash: 3
66
- segments:
67
- - 0
68
- version: "0"
69
- required_rubygems_version: !ruby/object:Gem::Requirement
70
- none: false
71
- requirements:
72
- - - ">="
73
- - !ruby/object:Gem::Version
74
- hash: 3
75
- segments:
76
- - 0
77
- version: "0"
48
+ required_ruby_version: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - '>='
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
53
+ required_rubygems_version: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - '>='
56
+ - !ruby/object:Gem::Version
57
+ version: '0'
78
58
  requirements: []
79
-
80
59
  rubyforge_project: auto_increment
81
- rubygems_version: 1.5.0
60
+ rubygems_version: 2.1.11
82
61
  signing_key:
83
- specification_version: 3
62
+ specification_version: 4
84
63
  summary: Auto increment a string or integer field
85
- test_files:
64
+ test_files:
86
65
  - test/app/Gemfile
87
66
  - test/app/app/controllers/application_controller.rb
88
67
  - test/app/app/helpers/application_helper.rb