mobility 0.1.14 → 0.1.15
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 +4 -4
- data/CHANGELOG.md +4 -0
- data/Gemfile +2 -1
- data/Gemfile.lock +15 -15
- data/README.md +1 -1
- data/lib/mobility.rb +17 -9
- data/lib/mobility/active_record.rb +8 -5
- data/lib/mobility/active_record/uniqueness_validator.rb +35 -0
- data/lib/mobility/backend/active_record/hash_valued.rb +0 -3
- data/lib/mobility/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 94e0c57f9d1cfb688811e00504ad03d685752867
|
4
|
+
data.tar.gz: d6a95ba806b2f5773616ddb8203fd3c9645ced61
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 04691839710e519cd7a85b15419ed85a2f1f7cdacfa290248b6d4ea2010af2f46e360ae575e238eabc220910f5e2b8dc493690b8605668e70e18b9df3e296f4a
|
7
|
+
data.tar.gz: 587a828deb6b91d7de8bf4021be37ca0726907e5957f59e0638064eeb34bef48f8b2618e1a51c3a07686b7ac78df1478966162f0830de35fd012c69157e49c8b
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,10 @@
|
|
2
2
|
|
3
3
|
## 0.1
|
4
4
|
|
5
|
+
### 0.1.15 (May 21, 2017)
|
6
|
+
* Add support for uniqueness validation ([#28](https://github.com/shioyama/mobility/pull/28))
|
7
|
+
* Inherit translated attributes in subclasses ([#30](https://github.com/shioyama/mobility/pull/30))
|
8
|
+
|
5
9
|
### 0.1.14 (April 27, 2017)
|
6
10
|
* Reset memoized backends when duplicating ([#26](https://github.com/shioyama/mobility/issues/25))
|
7
11
|
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
mobility (0.1.
|
4
|
+
mobility (0.1.14)
|
5
5
|
i18n (>= 0.6.10, < 0.9)
|
6
6
|
request_store (~> 1.0)
|
7
7
|
|
@@ -10,7 +10,7 @@ GEM
|
|
10
10
|
specs:
|
11
11
|
byebug (9.0.6)
|
12
12
|
coderay (1.1.1)
|
13
|
-
database_cleaner (1.
|
13
|
+
database_cleaner (1.6.0)
|
14
14
|
diff-lcs (1.3)
|
15
15
|
ffi (1.9.18)
|
16
16
|
formatador (0.2.5)
|
@@ -33,7 +33,7 @@ GEM
|
|
33
33
|
rb-fsevent (~> 0.9, >= 0.9.4)
|
34
34
|
rb-inotify (~> 0.9, >= 0.9.7)
|
35
35
|
ruby_dep (~> 1.2)
|
36
|
-
lumberjack (1.0.
|
36
|
+
lumberjack (1.0.12)
|
37
37
|
method_source (0.8.2)
|
38
38
|
mysql2 (0.3.21)
|
39
39
|
nenv (0.3.0)
|
@@ -53,25 +53,25 @@ GEM
|
|
53
53
|
rb-inotify (0.9.8)
|
54
54
|
ffi (>= 0.5.0)
|
55
55
|
request_store (1.3.2)
|
56
|
-
rspec (3.
|
57
|
-
rspec-core (~> 3.
|
58
|
-
rspec-expectations (~> 3.
|
59
|
-
rspec-mocks (~> 3.
|
60
|
-
rspec-core (3.
|
61
|
-
rspec-support (~> 3.
|
62
|
-
rspec-expectations (3.
|
56
|
+
rspec (3.6.0)
|
57
|
+
rspec-core (~> 3.6.0)
|
58
|
+
rspec-expectations (~> 3.6.0)
|
59
|
+
rspec-mocks (~> 3.6.0)
|
60
|
+
rspec-core (3.6.0)
|
61
|
+
rspec-support (~> 3.6.0)
|
62
|
+
rspec-expectations (3.6.0)
|
63
63
|
diff-lcs (>= 1.2.0, < 2.0)
|
64
|
-
rspec-support (~> 3.
|
65
|
-
rspec-mocks (3.
|
64
|
+
rspec-support (~> 3.6.0)
|
65
|
+
rspec-mocks (3.6.0)
|
66
66
|
diff-lcs (>= 1.2.0, < 2.0)
|
67
|
-
rspec-support (~> 3.
|
68
|
-
rspec-support (3.
|
67
|
+
rspec-support (~> 3.6.0)
|
68
|
+
rspec-support (3.6.0)
|
69
69
|
ruby_dep (1.5.0)
|
70
70
|
shellany (0.0.1)
|
71
71
|
slop (3.6.0)
|
72
72
|
sqlite3 (1.3.13)
|
73
73
|
thor (0.19.4)
|
74
|
-
yard (0.9.
|
74
|
+
yard (0.9.9)
|
75
75
|
|
76
76
|
PLATFORMS
|
77
77
|
ruby
|
data/README.md
CHANGED
data/lib/mobility.rb
CHANGED
@@ -92,19 +92,11 @@ module Mobility
|
|
92
92
|
end
|
93
93
|
|
94
94
|
class << self
|
95
|
-
include
|
95
|
+
include ClassMethods
|
96
96
|
|
97
97
|
if translates = Mobility.config.accessor_method
|
98
98
|
alias_method translates, :mobility_accessor
|
99
99
|
end
|
100
|
-
|
101
|
-
def mobility
|
102
|
-
@mobility ||= Mobility::Wrapper.new(self)
|
103
|
-
end
|
104
|
-
|
105
|
-
def translated_attribute_names
|
106
|
-
mobility.translated_attribute_names
|
107
|
-
end
|
108
100
|
end
|
109
101
|
end
|
110
102
|
|
@@ -244,6 +236,22 @@ module Mobility
|
|
244
236
|
end
|
245
237
|
end
|
246
238
|
|
239
|
+
module ClassMethods
|
240
|
+
include Translates
|
241
|
+
|
242
|
+
def mobility
|
243
|
+
@mobility ||= Mobility::Wrapper.new(self)
|
244
|
+
end
|
245
|
+
|
246
|
+
def translated_attribute_names
|
247
|
+
mobility.translated_attribute_names
|
248
|
+
end
|
249
|
+
|
250
|
+
def inherited(subclass)
|
251
|
+
subclass.instance_variable_set(:@mobility, @mobility)
|
252
|
+
end
|
253
|
+
end
|
254
|
+
|
247
255
|
class BackendRequired < ArgumentError; end
|
248
256
|
class InvalidLocale < I18n::InvalidLocale; end
|
249
257
|
end
|
@@ -5,11 +5,12 @@ Module loading ActiveRecord-specific classes for Mobility models.
|
|
5
5
|
|
6
6
|
=end
|
7
7
|
module ActiveRecord
|
8
|
-
autoload :BackendResetter,
|
9
|
-
autoload :ModelTranslation,
|
10
|
-
autoload :StringTranslation,
|
11
|
-
autoload :TextTranslation,
|
12
|
-
autoload :Translation,
|
8
|
+
autoload :BackendResetter, "mobility/active_record/backend_resetter"
|
9
|
+
autoload :ModelTranslation, "mobility/active_record/model_translation"
|
10
|
+
autoload :StringTranslation, "mobility/active_record/string_translation"
|
11
|
+
autoload :TextTranslation, "mobility/active_record/text_translation"
|
12
|
+
autoload :Translation, "mobility/active_record/translation"
|
13
|
+
autoload :UniquenessValidator, "mobility/active_record/uniqueness_validator"
|
13
14
|
|
14
15
|
def changes_applied
|
15
16
|
@previously_changed = changes
|
@@ -27,6 +28,8 @@ Module loading ActiveRecord-specific classes for Mobility models.
|
|
27
28
|
|
28
29
|
def self.included(model_class)
|
29
30
|
model_class.extend(ClassMethods)
|
31
|
+
model_class.const_set(:UniquenessValidator,
|
32
|
+
Class.new(::Mobility::ActiveRecord::UniquenessValidator))
|
30
33
|
end
|
31
34
|
|
32
35
|
module ClassMethods
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Mobility
|
2
|
+
module ActiveRecord
|
3
|
+
class UniquenessValidator < ::ActiveRecord::Validations::UniquenessValidator
|
4
|
+
def validate_each(record, attribute, value)
|
5
|
+
klass = record.class
|
6
|
+
|
7
|
+
if ((Array(options[:scope]) + [attribute]).map(&:to_s) & klass.translated_attribute_names).present?
|
8
|
+
return unless value.present?
|
9
|
+
relation = klass.send(Mobility.query_method).where(attribute => value)
|
10
|
+
relation = relation.where.not(klass.primary_key => record.id) if record.persisted?
|
11
|
+
relation = mobility_scope_relation(record, relation)
|
12
|
+
relation = relation.merge(options[:conditions]) if options[:conditions]
|
13
|
+
|
14
|
+
if relation.exists?
|
15
|
+
error_options = options.except(:case_sensitive, :scope, :conditions)
|
16
|
+
error_options[:value] = value
|
17
|
+
|
18
|
+
record.errors.add(attribute, :taken, error_options)
|
19
|
+
end
|
20
|
+
else
|
21
|
+
super
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def mobility_scope_relation(record, relation)
|
28
|
+
Array(options[:scope]).each do |scope_item|
|
29
|
+
relation = relation.where(scope_item => record.send(scope_item))
|
30
|
+
end
|
31
|
+
relation
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -32,9 +32,6 @@ Internal class used by ActiveRecord backends that store values as a hash.
|
|
32
32
|
|
33
33
|
setup do |attributes, options|
|
34
34
|
attributes.each { |attribute| store attribute, coder: Coder }
|
35
|
-
before_validation do
|
36
|
-
attributes.each { |attribute| self.send(:"#{attribute}=", {}) if send(attribute).nil? }
|
37
|
-
end
|
38
35
|
end
|
39
36
|
|
40
37
|
class Coder
|
data/lib/mobility/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mobility
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.15
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Salzberg
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-05-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: request_store
|
@@ -157,6 +157,7 @@ files:
|
|
157
157
|
- lib/mobility/active_record/string_translation.rb
|
158
158
|
- lib/mobility/active_record/text_translation.rb
|
159
159
|
- lib/mobility/active_record/translation.rb
|
160
|
+
- lib/mobility/active_record/uniqueness_validator.rb
|
160
161
|
- lib/mobility/attributes.rb
|
161
162
|
- lib/mobility/backend.rb
|
162
163
|
- lib/mobility/backend/active_model.rb
|
@@ -243,7 +244,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
243
244
|
version: '0'
|
244
245
|
requirements: []
|
245
246
|
rubyforge_project:
|
246
|
-
rubygems_version: 2.
|
247
|
+
rubygems_version: 2.6.12
|
247
248
|
signing_key:
|
248
249
|
specification_version: 4
|
249
250
|
summary: Pluggable Ruby translation framework
|