auto_increment 0.1 → 0.2
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.
- data/lib/auto_increment/active_record.rb +2 -2
- data/lib/auto_increment/version.rb +1 -1
- data/test/auto_increment_test.rb +16 -2
- data/test/test_helper.rb +1 -1
- metadata +4 -4
@@ -4,7 +4,7 @@ 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 }
|
7
|
+
default_options = { :column => :code, :scope => nil, :initial => 1, :force => false }
|
8
8
|
options = default_options.merge(options) unless options.nil?
|
9
9
|
|
10
10
|
options[:scope] = [options[:scope]] if options[:scope].class != Array
|
@@ -12,7 +12,7 @@ module AutoIncrement
|
|
12
12
|
before_create "auto_increment_#{options[:column]}"
|
13
13
|
|
14
14
|
define_method "auto_increment_#{options[:column]}" do
|
15
|
-
|
15
|
+
return if self.send(options[:column]).present? and !options[:force]
|
16
16
|
query = self.class.scoped
|
17
17
|
options[:scope].each do |scope|
|
18
18
|
if scope.present? and respond_to?(scope)
|
data/test/auto_increment_test.rb
CHANGED
@@ -41,12 +41,26 @@ class AutoIncrementActiveRecordTest < ActiveRecord::TestCase
|
|
41
41
|
assert_equal 'A', @user_account2.letter_code
|
42
42
|
end
|
43
43
|
|
44
|
-
test "
|
44
|
+
test "Z increments to AA" do
|
45
45
|
assert_equal 'AA', @user4.letter_code
|
46
46
|
end
|
47
47
|
|
48
|
-
test "
|
48
|
+
test "AA increments to AB" do
|
49
49
|
assert_equal 'AB', @user5.letter_code
|
50
50
|
end
|
51
51
|
|
52
|
+
test "not set column if is already set" do
|
53
|
+
account = Account.new :name => 'Another Account', :code => 50
|
54
|
+
account.save
|
55
|
+
|
56
|
+
assert_equal account.code, 50
|
57
|
+
end
|
58
|
+
|
59
|
+
test "set column if option force is used" do
|
60
|
+
User.destroy_all
|
61
|
+
user = User.new :name => 'Maria', :letter_code => 'Z'
|
62
|
+
user.save
|
63
|
+
|
64
|
+
assert_equal user.letter_code, 'A'
|
65
|
+
end
|
52
66
|
end
|
data/test/test_helper.rb
CHANGED
@@ -29,7 +29,7 @@ class Account < ActiveRecord::Base
|
|
29
29
|
end
|
30
30
|
|
31
31
|
class User < ActiveRecord::Base
|
32
|
-
auto_increment :column => :letter_code, :scope => :account_id, :initial => 'A'
|
32
|
+
auto_increment :column => :letter_code, :scope => :account_id, :initial => 'A', :force => true
|
33
33
|
|
34
34
|
belongs_to :account
|
35
35
|
end
|
metadata
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: auto_increment
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 15
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: "0.
|
8
|
+
- 2
|
9
|
+
version: "0.2"
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Felipe Diesel
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2011-
|
17
|
+
date: 2011-03-31 00:00:00 -03:00
|
18
18
|
default_executable:
|
19
19
|
dependencies: []
|
20
20
|
|