mongoid-autoinc 0.0.3 → 0.0.4

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/README.rdoc CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  A mongoid plugin to add auto incrementing fields to your documents.
4
4
 
5
+ {<img src="https://secure.travis-ci.org/80beans/mongoid-autoinc.png" />}[http://travis-ci.org/#!/80beans/mongoid-autoinc]
5
6
 
6
7
  == Installation
7
8
 
@@ -11,22 +12,20 @@ in gemfile:
11
12
 
12
13
  in class:
13
14
 
14
- require Mongoid::Autoinc
15
-
15
+ require 'autoinc'
16
16
 
17
17
  === Usage
18
18
 
19
- # app/models/movie.rb
19
+ # app/models/user.rb
20
20
  class User
21
- include MongoMapper::Autoinc
21
+ include Mongoid::Document
22
+ include Mongoid::Autoinc
22
23
  field :name
23
24
  field :number, :type => Integer
24
25
 
25
26
  auto_increment :number
26
27
  end
27
28
 
28
- == Usage
29
-
30
29
  user = User.create(:name => 'Dr. Percival "Perry" Ulysses Cox')
31
30
  user.id # BSON::ObjectId('4d1d150d30f2246bc6000001')
32
31
  user.number # 1
@@ -34,6 +33,24 @@ in class:
34
33
  another_user = User.create(:name => 'Bob Kelso')
35
34
  another_user.number # 2
36
35
 
36
+
37
+ === Scopes
38
+
39
+ You can scope on document fields. For example:
40
+
41
+ class PatientFile
42
+ include Mongoid::Document
43
+ include Mongoid::Autoinc
44
+
45
+ field :name
46
+ field :number, :type => Integer
47
+
48
+ auto_increment :number, :scope => :patient_id
49
+
50
+ belongs_to :patient
51
+
52
+ end
53
+
37
54
  === Development
38
55
 
39
56
  $ gem install bundler (if you don't have it)
data/lib/autoinc.rb CHANGED
@@ -12,15 +12,11 @@ module Mongoid
12
12
  module ClassMethods
13
13
 
14
14
  def autoincrementing_fields
15
- @autoincrementing_fields ||= []
15
+ @autoincrementing_fields ||= {}
16
16
  end
17
17
 
18
- def auto_increment(field)
19
- if autoincrementing_fields
20
- autoincrementing_fields<< field
21
- else
22
- autoincrementing_fields = [field]
23
- end
18
+ def auto_increment(field, options={})
19
+ autoincrementing_fields[field] = options
24
20
  end
25
21
 
26
22
  end
@@ -28,10 +24,11 @@ module Mongoid
28
24
  module InstanceMethods
29
25
 
30
26
  def update_auto_increments
31
- self.class.autoincrementing_fields.each do |autoincrementing_field|
27
+ self.class.autoincrementing_fields.each do |autoincrementing_field, options|
28
+ scope_key = options[:scope] ? send(options[:scope]) : nil
32
29
  write_attribute(
33
30
  autoincrementing_field.to_sym,
34
- Mongoid::Autoinc::Incrementor.new(self.class.name, autoincrementing_field).inc
31
+ Mongoid::Autoinc::Incrementor.new(self.class.name, autoincrementing_field, scope_key).inc
35
32
  )
36
33
  end
37
34
 
@@ -1,3 +1,3 @@
1
1
  module Mongoid::Autoinc
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
data/lib/incrementor.rb CHANGED
@@ -4,16 +4,20 @@ module Mongoid
4
4
  module Autoinc
5
5
 
6
6
  class Incrementor
7
- attr_accessor :model_name, :field_name, :collection
7
+ attr_accessor :model_name, :field_name, :scope_key, :collection
8
8
 
9
- def initialize(model_name, field_name)
9
+ def initialize(model_name, field_name, scope_key=nil)
10
10
  self.model_name = model_name
11
11
  self.field_name = field_name.to_s
12
+ self.scope_key = scope_key
12
13
  self.collection = Mongoid.database['auto_increment_counters']
13
14
  end
14
15
 
15
16
  def key
16
- "#{model_name.underscore}_#{field_name}"
17
+ "".tap do |str|
18
+ str << "#{model_name.underscore}_#{field_name}"
19
+ str << "_#{scope_key}" unless scope_key.blank?
20
+ end
17
21
  end
18
22
 
19
23
  def ensuring_document(&block)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongoid-autoinc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-10 00:00:00.000000000 Z
12
+ date: 2012-01-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: mongoid
16
- requirement: &2156041280 !ruby/object:Gem::Requirement
16
+ requirement: &2152146500 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2156041280
24
+ version_requirements: *2152146500
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: bson_ext
27
- requirement: &2155893980 !ruby/object:Gem::Requirement
27
+ requirement: &2152139260 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *2155893980
35
+ version_requirements: *2152139260
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec
38
- requirement: &2155893020 !ruby/object:Gem::Requirement
38
+ requirement: &2152138200 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *2155893020
46
+ version_requirements: *2152138200
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: activesupport
49
- requirement: &2155892080 !ruby/object:Gem::Requirement
49
+ requirement: &2152137260 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *2155892080
57
+ version_requirements: *2152137260
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rake
60
- requirement: &2155891420 !ruby/object:Gem::Requirement
60
+ requirement: &2152136580 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: '0'
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *2155891420
68
+ version_requirements: *2152136580
69
69
  description: Think auto incrementing field from MySQL for mongoid.
70
70
  email:
71
71
  - robert@80beans.com