reform-rails 0.1.7 → 0.2.1
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 +5 -5
- data/.gitignore +4 -1
- data/.rubocop.yml +3 -0
- data/.rubocop_todo.yml +661 -0
- data/.travis.yml +11 -11
- data/CHANGES.md +23 -1
- data/Gemfile +30 -3
- data/LICENSE.txt +1 -1
- data/README.md +11 -2
- data/Rakefile +3 -1
- data/lib/reform/active_record.rb +1 -1
- data/lib/reform/form/active_model.rb +7 -4
- data/lib/reform/form/active_model/validations.rb +195 -70
- data/lib/reform/form/active_record.rb +0 -2
- data/lib/reform/form/mongoid.rb +26 -0
- data/lib/reform/form/multi_parameter_attributes.rb +5 -1
- data/lib/reform/form/orm.rb +4 -1
- data/lib/reform/form/validation/unique_validator.rb +18 -4
- data/lib/reform/mongoid.rb +4 -0
- data/lib/reform/rails.rb +1 -0
- data/lib/reform/rails/railtie.rb +22 -17
- data/lib/reform/rails/version.rb +1 -1
- data/reform-rails.gemspec +5 -12
- metadata +17 -126
- data/database.sqlite3 +0 -0
- data/gemfiles/Gemfile.rails-3.2 +0 -7
- data/gemfiles/Gemfile.rails-4.0 +0 -7
- data/gemfiles/Gemfile.rails-4.1 +0 -7
- data/gemfiles/Gemfile.rails-4.2 +0 -7
- data/log/development.log +0 -0
@@ -0,0 +1,26 @@
|
|
1
|
+
gem 'mongoid', ">= 4.0"
|
2
|
+
|
3
|
+
module Reform::Form::Mongoid
|
4
|
+
def self.included(base)
|
5
|
+
base.class_eval do
|
6
|
+
register_feature Reform::Form::Mongoid
|
7
|
+
include Reform::Form::ActiveModel
|
8
|
+
include Reform::Form::ORM
|
9
|
+
extend ClassMethods
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
module ClassMethods
|
14
|
+
def validates_uniqueness_of(attribute, options={})
|
15
|
+
options = options.merge(:attributes => [attribute])
|
16
|
+
validates_with(UniquenessValidator, options)
|
17
|
+
end
|
18
|
+
def i18n_scope
|
19
|
+
:mongoid
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
UniquenessValidator = Class.new("::Mongoid::Validatable::UniquenessValidator".constantize) do
|
24
|
+
include Reform::Form::ORM::UniquenessValidator
|
25
|
+
end
|
26
|
+
end
|
data/lib/reform/form/orm.rb
CHANGED
@@ -19,7 +19,10 @@ module Reform::Form::ORM
|
|
19
19
|
|
20
20
|
@klass = record.class # this is usually done in the super-sucky #setup method.
|
21
21
|
super(record).tap do |res|
|
22
|
-
|
22
|
+
if record.errors.present?
|
23
|
+
error = self.class.name.include?("Mongoid") ? record.errors.first.last : :taken
|
24
|
+
form.errors.add(property, error)
|
25
|
+
end
|
23
26
|
end
|
24
27
|
end
|
25
28
|
end
|
@@ -7,6 +7,12 @@
|
|
7
7
|
# validates :title, unique: true
|
8
8
|
#
|
9
9
|
# == Options
|
10
|
+
#
|
11
|
+
# = Case Sensitivity
|
12
|
+
# Case sensitivity is true by default, but can be set to false:
|
13
|
+
#
|
14
|
+
# validates :title, unique: { case_sensitive: false }
|
15
|
+
#
|
10
16
|
# = Scope
|
11
17
|
# A scope can be use to filter the records that need to be compare with the
|
12
18
|
# current value to validate. A scope array can have one to many fields define.
|
@@ -31,9 +37,19 @@
|
|
31
37
|
class Reform::Form::UniqueValidator < ActiveModel::EachValidator
|
32
38
|
def validate_each(form, attribute, value)
|
33
39
|
model = form.model_for_property(attribute)
|
40
|
+
original_attribute = form.options_for(attribute)[:private_name]
|
34
41
|
|
35
42
|
# search for models with attribute equals to form field value
|
36
|
-
query =
|
43
|
+
query = if options[:case_sensitive] == false && value
|
44
|
+
model.class.where("lower(#{original_attribute}) = ?", value.downcase)
|
45
|
+
else
|
46
|
+
model.class.where(original_attribute => value)
|
47
|
+
end
|
48
|
+
|
49
|
+
# if model persisted, query should bypass model
|
50
|
+
if model.persisted?
|
51
|
+
query = query.where("#{model.class.primary_key} != ?", model.id)
|
52
|
+
end
|
37
53
|
|
38
54
|
# apply scope if options has been declared
|
39
55
|
Array(options[:scope]).each do |field|
|
@@ -41,9 +57,7 @@ class Reform::Form::UniqueValidator < ActiveModel::EachValidator
|
|
41
57
|
query = query.where(field => form.send(field))
|
42
58
|
end
|
43
59
|
|
44
|
-
|
45
|
-
allow_count = model.persisted? ? 1 : 0
|
46
|
-
form.errors.add(attribute, :taken) if query.count > allow_count
|
60
|
+
form.errors.add(attribute, :taken) if query.count > 0
|
47
61
|
end
|
48
62
|
end
|
49
63
|
|
data/lib/reform/rails.rb
CHANGED
data/lib/reform/rails/railtie.rb
CHANGED
@@ -6,48 +6,53 @@ module Reform
|
|
6
6
|
initializer "reform.form_extensions", after: :load_config_initializers do
|
7
7
|
validations = config.reform.validations || :active_model
|
8
8
|
|
9
|
+
require "reform/form/multi_parameter_attributes"
|
10
|
+
|
9
11
|
if validations == :active_model
|
10
12
|
active_model!
|
11
13
|
elsif validations == :dry
|
12
|
-
|
14
|
+
enable_form_builder_methods = config.reform.enable_active_model_builder_methods || false
|
15
|
+
|
16
|
+
dry!(enable_form_builder_methods)
|
13
17
|
else
|
14
18
|
warn "[Reform::Rails] No validation backend set. Please do so via `config.reform.validations = :active_model`."
|
15
19
|
end
|
16
20
|
end
|
17
21
|
|
18
22
|
def active_model!
|
19
|
-
require "reform"
|
20
|
-
require "reform/form/active_model/model_validations"
|
21
23
|
require "reform/form/active_model/form_builder_methods"
|
22
24
|
require "reform/form/active_model"
|
25
|
+
|
26
|
+
require "reform/form/active_model/model_validations"
|
23
27
|
require "reform/form/active_model/validations"
|
24
|
-
require "reform/form/multi_parameter_attributes"
|
25
28
|
|
26
|
-
require "reform/active_record" if defined?(ActiveRecord)
|
27
|
-
require "reform/mongoid" if defined?(Mongoid)
|
29
|
+
require "reform/active_record" if defined?(::ActiveRecord)
|
30
|
+
require "reform/mongoid" if defined?(::Mongoid)
|
28
31
|
|
29
32
|
Reform::Form.class_eval do
|
30
33
|
include Reform::Form::ActiveModel
|
31
34
|
include Reform::Form::ActiveModel::FormBuilderMethods
|
32
|
-
include Reform::Form::ActiveRecord if defined?(ActiveRecord)
|
33
|
-
include Reform::Form::Mongoid if defined?(Mongoid)
|
35
|
+
include Reform::Form::ActiveRecord if defined?(::ActiveRecord)
|
36
|
+
include Reform::Form::Mongoid if defined?(::Mongoid)
|
34
37
|
include Reform::Form::ActiveModel::Validations
|
35
38
|
end
|
36
39
|
end
|
37
40
|
|
38
|
-
def dry!
|
39
|
-
|
40
|
-
|
41
|
+
def dry!(enable_am = true)
|
42
|
+
if enable_am
|
43
|
+
require "reform/form/active_model/form_builder_methods" # this is for simple_form, etc.
|
41
44
|
|
42
|
-
|
43
|
-
|
45
|
+
# This adds Form#persisted? and all the other crap #form_for depends on. Grrrr.
|
46
|
+
require "reform/form/active_model" # DISCUSS: only when using simple_form.
|
47
|
+
end
|
44
48
|
|
45
|
-
|
46
|
-
require "reform/form/active_model" # DISCUSS: only when using simple_form.
|
49
|
+
require "reform/form/dry"
|
47
50
|
|
48
51
|
Reform::Form.class_eval do
|
49
|
-
|
50
|
-
|
52
|
+
if enable_am
|
53
|
+
include Reform::Form::ActiveModel
|
54
|
+
include Reform::Form::ActiveModel::FormBuilderMethods
|
55
|
+
end
|
51
56
|
|
52
57
|
include Reform::Form::Dry
|
53
58
|
end
|
data/lib/reform/rails/version.rb
CHANGED
data/reform-rails.gemspec
CHANGED
@@ -14,19 +14,12 @@ Gem::Specification.new do |spec|
|
|
14
14
|
spec.homepage = "https://github.com/trailblazer/reform-rails"
|
15
15
|
spec.license = "MIT"
|
16
16
|
|
17
|
-
spec.files = `git ls-files -z`.split("\x0").reject
|
17
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
18
|
+
f.match(%r{^(test/|spec/|features/|database.sqlite3)})
|
19
|
+
end
|
18
20
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
19
21
|
spec.require_paths = ["lib"]
|
20
22
|
|
21
|
-
spec.add_dependency "reform", ">= 2.
|
22
|
-
spec.add_dependency "activemodel", ">=
|
23
|
-
|
24
|
-
spec.add_development_dependency "rails"
|
25
|
-
spec.add_development_dependency "bundler"
|
26
|
-
spec.add_development_dependency "rake"
|
27
|
-
spec.add_development_dependency "minitest"
|
28
|
-
spec.add_development_dependency "actionpack"
|
29
|
-
spec.add_development_dependency "activerecord"
|
30
|
-
spec.add_development_dependency "mongoid"
|
31
|
-
spec.add_development_dependency "sqlite3"
|
23
|
+
spec.add_dependency "reform", ">= 2.3.1", "< 3.0.0"
|
24
|
+
spec.add_dependency "activemodel", ">= 5.0"
|
32
25
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: reform-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nick Sutterer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-11-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: reform
|
@@ -16,140 +16,34 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 2.
|
20
|
-
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ">="
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: 2.2.0
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: activemodel
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
19
|
+
version: 2.3.1
|
20
|
+
- - "<"
|
32
21
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
22
|
+
version: 3.0.0
|
34
23
|
type: :runtime
|
35
24
|
prerelease: false
|
36
25
|
version_requirements: !ruby/object:Gem::Requirement
|
37
26
|
requirements:
|
38
27
|
- - ">="
|
39
28
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
41
|
-
-
|
42
|
-
name: rails
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ">="
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ">="
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: bundler
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - ">="
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - ">="
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: rake
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - ">="
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - ">="
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: minitest
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - ">="
|
29
|
+
version: 2.3.1
|
30
|
+
- - "<"
|
88
31
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - ">="
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '0'
|
32
|
+
version: 3.0.0
|
97
33
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - ">="
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '0'
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - ">="
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: activerecord
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - ">="
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: '0'
|
118
|
-
type: :development
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - ">="
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: '0'
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: mongoid
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - ">="
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: '0'
|
132
|
-
type: :development
|
133
|
-
prerelease: false
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
135
|
-
requirements:
|
136
|
-
- - ">="
|
137
|
-
- !ruby/object:Gem::Version
|
138
|
-
version: '0'
|
139
|
-
- !ruby/object:Gem::Dependency
|
140
|
-
name: sqlite3
|
34
|
+
name: activemodel
|
141
35
|
requirement: !ruby/object:Gem::Requirement
|
142
36
|
requirements:
|
143
37
|
- - ">="
|
144
38
|
- !ruby/object:Gem::Version
|
145
|
-
version: '0'
|
146
|
-
type: :
|
39
|
+
version: '5.0'
|
40
|
+
type: :runtime
|
147
41
|
prerelease: false
|
148
42
|
version_requirements: !ruby/object:Gem::Requirement
|
149
43
|
requirements:
|
150
44
|
- - ">="
|
151
45
|
- !ruby/object:Gem::Version
|
152
|
-
version: '0'
|
46
|
+
version: '5.0'
|
153
47
|
description: Automatically load and include all common Reform features for a standard
|
154
48
|
Rails environment.
|
155
49
|
email:
|
@@ -159,17 +53,14 @@ extensions: []
|
|
159
53
|
extra_rdoc_files: []
|
160
54
|
files:
|
161
55
|
- ".gitignore"
|
56
|
+
- ".rubocop.yml"
|
57
|
+
- ".rubocop_todo.yml"
|
162
58
|
- ".travis.yml"
|
163
59
|
- CHANGES.md
|
164
60
|
- Gemfile
|
165
61
|
- LICENSE.txt
|
166
62
|
- README.md
|
167
63
|
- Rakefile
|
168
|
-
- database.sqlite3
|
169
|
-
- gemfiles/Gemfile.rails-3.2
|
170
|
-
- gemfiles/Gemfile.rails-4.0
|
171
|
-
- gemfiles/Gemfile.rails-4.1
|
172
|
-
- gemfiles/Gemfile.rails-4.2
|
173
64
|
- lib/reform/active_record.rb
|
174
65
|
- lib/reform/form/active_model.rb
|
175
66
|
- lib/reform/form/active_model/form_builder_methods.rb
|
@@ -177,13 +68,14 @@ files:
|
|
177
68
|
- lib/reform/form/active_model/model_validations.rb
|
178
69
|
- lib/reform/form/active_model/validations.rb
|
179
70
|
- lib/reform/form/active_record.rb
|
71
|
+
- lib/reform/form/mongoid.rb
|
180
72
|
- lib/reform/form/multi_parameter_attributes.rb
|
181
73
|
- lib/reform/form/orm.rb
|
182
74
|
- lib/reform/form/validation/unique_validator.rb
|
75
|
+
- lib/reform/mongoid.rb
|
183
76
|
- lib/reform/rails.rb
|
184
77
|
- lib/reform/rails/railtie.rb
|
185
78
|
- lib/reform/rails/version.rb
|
186
|
-
- log/development.log
|
187
79
|
- reform-rails.gemspec
|
188
80
|
homepage: https://github.com/trailblazer/reform-rails
|
189
81
|
licenses:
|
@@ -204,8 +96,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
204
96
|
- !ruby/object:Gem::Version
|
205
97
|
version: '0'
|
206
98
|
requirements: []
|
207
|
-
|
208
|
-
rubygems_version: 2.5.1
|
99
|
+
rubygems_version: 3.0.6
|
209
100
|
signing_key:
|
210
101
|
specification_version: 4
|
211
102
|
summary: Automatically load and include all common Rails form features.
|
data/database.sqlite3
DELETED
Binary file
|
data/gemfiles/Gemfile.rails-3.2
DELETED