active_repository 0.3.10 → 0.4.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5c96cb1c73d748941744088071c5c2e38e5bf1ce
4
- data.tar.gz: 569ad040981ca167751a6aca43eb8f7e1d809cf7
3
+ metadata.gz: 88bcc2de4247471046b40735b92062c68435132f
4
+ data.tar.gz: 9b496d88de8a8d0b784e7bd2eca531b5acf6484a
5
5
  SHA512:
6
- metadata.gz: 7ad1edf741dc80857368b16fe74eadce70b7055b1d30bce92b2af0fcc1d6c944363a6563f71d58b749620941f25b66ba1ade30b18a3ecbf002494c412a7557ec
7
- data.tar.gz: d59b12b7c096d7560716d42bf63015aa2a9ae2703140576b333f38560bb8ab911a7eb0fccef445c296a2e94be373aeb2a167c8dc9cdfad751b10214b1123be56
6
+ metadata.gz: f1464d3c00f1ad26e2dcab554a1e8db0d176b25598e43760853120da7cd70d2027620772c026a0328dcad21f18c80b5fd8e341cec6d82e81fa223be0c7031962
7
+ data.tar.gz: 91dfb8189cf36f725807d0483b63d430f92aeb72277194187959bcea90d1d152d9ea6c78ffe5e579e985e16228ac267036b4ce3807aeb11631f894e0d7766a22
@@ -8,7 +8,15 @@ module ActiveModel
8
8
  end
9
9
 
10
10
  def validate_each(record, attribute, value)
11
- query = (record.id ? "id <> #{record.id}" : 'id is not null')
11
+ query = (record.id ? "id <> #{record.id}" : 'id is not null')
12
+
13
+ if(options[:scope])
14
+ value = record.send(options[:scope])
15
+ query += " and #{options[:scope]} = "
16
+ query += value.is_a?(String) ? "'#{value}'" : value
17
+ end
18
+
19
+
12
20
  duplicate = record.class.where(query).all.select do |object|
13
21
  object.id != record.id && object.send(attribute) == record.send(attribute)
14
22
  end
@@ -1,3 +1,3 @@
1
1
  module ActiveRepository
2
- VERSION = "0.3.10"
2
+ VERSION = "0.4.0"
3
3
  end
@@ -105,6 +105,7 @@ describe ActiveRepository, "Base" do
105
105
  it_behaves_like '.delete_all'
106
106
  it_behaves_like '#delete'
107
107
  it_behaves_like 'uniqueness'
108
+ it_behaves_like 'uniqueness_with_scope'
108
109
  end
109
110
 
110
111
  context "active_record", :active_record do
@@ -172,6 +173,7 @@ describe ActiveRepository, "Base" do
172
173
  it_behaves_like '.delete_all'
173
174
  it_behaves_like '#delete'
174
175
  it_behaves_like 'uniqueness'
176
+ it_behaves_like 'uniqueness_with_scope'
175
177
  end
176
178
 
177
179
  context "mongoid", :mongoid do
@@ -244,5 +246,6 @@ describe ActiveRepository, "Base" do
244
246
  it_behaves_like '.delete_all'
245
247
  it_behaves_like '#delete'
246
248
  it_behaves_like 'uniqueness'
249
+ it_behaves_like 'uniqueness_with_scope'
247
250
  end
248
251
  end
@@ -769,4 +769,23 @@ shared_examples "uniqueness" do
769
769
  Country.count.should == 1
770
770
  Country.all.should == [country1]
771
771
  end
772
- end
772
+ end
773
+
774
+ shared_examples "uniqueness_with_scope" do
775
+ before do
776
+ Country.delete_all
777
+ Country.validates_uniqueness_of :language, scope: 'name'
778
+ end
779
+
780
+ it "does not accept duplicated ids" do
781
+ country1 = Country.create(name: 'USA', language: 'English')
782
+ country2 = Country.create(name: 'Canada', language: 'English')
783
+ country3 = Country.create(name: 'USA', language: 'English')
784
+
785
+ country1.should be_valid
786
+ country2.should be_valid
787
+ country3.should_not be_valid
788
+ Country.count.should == 2
789
+ Country.all.should == [country1, country2]
790
+ end
791
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_repository
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.10
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Caio Torres
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-25 00:00:00.000000000 Z
11
+ date: 2014-07-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: active_hash