reform-rails 0.1.7 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,3 @@
1
- require "reform/form/orm"
2
-
3
1
  module Reform::Form::ActiveRecord
4
2
  def self.included(base)
5
3
  base.class_eval do
@@ -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
@@ -19,7 +19,11 @@ module Reform::Form::MultiParameterAttributes
19
19
  )
20
20
  end
21
21
  end
22
- params.merge!(date_attributes)
22
+
23
+ date_attributes.each do |attribute, date|
24
+ params[attribute] = date
25
+ end
26
+ params
23
27
  end
24
28
 
25
29
  private
@@ -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
- form.errors.add(property, record.errors.first.last) if record.errors.present?
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 = model.class.where(attribute => value)
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
- # if model persisted, query may return 0 or 1 rows, else 0
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
 
@@ -0,0 +1,4 @@
1
+ require 'reform/form/orm'
2
+ require 'reform/form/active_model'
3
+ require 'reform/form/mongoid'
4
+ require 'reform/form/active_model/model_reflections' # only load this in AR context as simple_form currently is bound to AR.
@@ -1,4 +1,5 @@
1
1
  require "reform/rails/version"
2
+ require 'reform'
2
3
  require "reform/rails/railtie"
3
4
 
4
5
  module Reform
@@ -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
- dry!
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
- require "reform"
40
- require "reform/form/dry"
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
- require "reform/form/multi_parameter_attributes"
43
- require "reform/form/active_model/form_builder_methods" # this is for simple_form, etc.
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
- # 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.
49
+ require "reform/form/dry"
47
50
 
48
51
  Reform::Form.class_eval do
49
- include Reform::Form::ActiveModel # DISCUSS: only when using simple_form.
50
- include Reform::Form::ActiveModel::FormBuilderMethods
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
@@ -1,5 +1,5 @@
1
1
  module Reform
2
2
  module Rails
3
- VERSION = "0.1.7"
3
+ VERSION = "0.2.1"
4
4
  end
5
5
  end
@@ -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 { |f| f.match(%r{^(test|spec|features)/}) }
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.2.0"
22
- spec.add_dependency "activemodel", ">= 3.2"
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.7
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: 2016-09-26 00:00:00.000000000 Z
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.2.0
20
- type: :runtime
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: '3.2'
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: '3.2'
41
- - !ruby/object:Gem::Dependency
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: '0'
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: actionpack
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: :development
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
- rubyforge_project:
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.
Binary file
@@ -1,7 +0,0 @@
1
- source "http://rubygems.org"
2
-
3
- # Specify your gem's dependencies in reform.gemspec
4
- gemspec :path => '../'
5
-
6
- gem 'railties', '~> 3.2.0'
7
- gem 'activerecord', '~> 3.2.0'
@@ -1,7 +0,0 @@
1
- source "http://rubygems.org"
2
-
3
- # Specify your gem's dependencies in reform.gemspec
4
- gemspec :path => '../'
5
-
6
- gem 'railties', '~> 4.0.0'
7
- gem 'activerecord', '~> 4.0.0'