validation_group 0.1.3 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/Rakefile +0 -1
- data/lib/validation_group.rb +17 -21
- data/test/test_helper.rb +4 -16
- metadata +104 -40
- data/README +0 -33
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 47f7835f9402eb199565f9cd015632f06be3475948d1285622cd5a01e448b8d3
|
4
|
+
data.tar.gz: 9a39c8e6f204161ec9ee46b60107471228cd098e1796dbbc9f22e1c00935dcd0
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ddd1477d6edd88470a83b84a2cf6ae2f3623a4d762514d1923beefe3e2897b19f970a08f8c6594ef7c257665876521673ed2a81fa467dbad84778c4cc29e462a
|
7
|
+
data.tar.gz: a76406ba099896c80b99fd6a536e5b31035a3ad35cf88598c9cd490712c98c29c2bc3e5854a40ff1a8ccec66287e225a7fb7ddb77ce6a60a5dc25167dbec345e
|
data/Rakefile
CHANGED
@@ -12,7 +12,6 @@ spec = Gem::Specification.new do |s|
|
|
12
12
|
|
13
13
|
s.files = FileList['{lib,test,tasks}/**/*'] + %w(CHANGELOG.rdoc init.rb install.rb uninstall.rb MIT-LICENSE Rakefile README .gitignore) - FileList['**/*.log']
|
14
14
|
s.require_path = 'lib'
|
15
|
-
s.has_rdoc = true
|
16
15
|
s.test_files = Dir['test/*_test.rb']
|
17
16
|
|
18
17
|
s.author = 'Alex Kira'
|
data/lib/validation_group.rb
CHANGED
@@ -7,7 +7,7 @@ module ValidationGroup
|
|
7
7
|
base.class_eval do
|
8
8
|
cattr_accessor :validation_group_classes
|
9
9
|
self.validation_group_classes = {}
|
10
|
-
|
10
|
+
|
11
11
|
def self.validation_group_order; @validation_group_order; end
|
12
12
|
def self.validation_groups(all_classes = false)
|
13
13
|
return (self.validation_group_classes[self] || {}) unless all_classes
|
@@ -33,14 +33,17 @@ module ValidationGroup
|
|
33
33
|
# jeffp: added reader for current_validation_fields
|
34
34
|
attr_reader :current_validation_group, :current_validation_fields
|
35
35
|
include InstanceMethods
|
36
|
-
# jeffp: add valid?(group = nil), see definition below
|
37
|
-
alias_method_chain :valid?, :validation_group
|
38
36
|
end
|
39
37
|
end
|
40
38
|
end
|
41
39
|
|
42
40
|
module InstanceMethods # included in every model which calls validation_group
|
43
|
-
|
41
|
+
|
42
|
+
def self.included(base)
|
43
|
+
# jeffp: add valid?(group = nil), see definition below
|
44
|
+
base.prepend ValidWithValidationGroup
|
45
|
+
end
|
46
|
+
|
44
47
|
def enable_validation_group(group)
|
45
48
|
# Check if given validation group is defined for current class or one of
|
46
49
|
# its ancestors
|
@@ -63,7 +66,7 @@ module ValidationGroup
|
|
63
66
|
# jeffp: delete fields
|
64
67
|
@current_validation_fields = nil
|
65
68
|
end
|
66
|
-
|
69
|
+
|
67
70
|
# jeffp: optimizer for someone writing custom :validate method -- no need
|
68
71
|
# to validate fields outside the current validation group note: could also
|
69
72
|
# use in validation modules to improve performance
|
@@ -74,28 +77,21 @@ module ValidationGroup
|
|
74
77
|
def validation_group_enabled?
|
75
78
|
respond_to?(:current_validation_group) && !current_validation_group.nil?
|
76
79
|
end
|
77
|
-
|
80
|
+
end
|
81
|
+
|
82
|
+
module ValidWithValidationGroup
|
78
83
|
# eliminates need to use :enable_validation_group before :valid? call --
|
79
|
-
|
80
|
-
def valid_with_validation_group?(group=nil)
|
84
|
+
def valid?(group=nil)
|
81
85
|
self.enable_validation_group(group) if group
|
82
|
-
|
86
|
+
super
|
83
87
|
end
|
84
88
|
end
|
85
89
|
|
86
90
|
module Errors # included in ActiveRecord::Errors
|
87
|
-
def
|
88
|
-
msg = nil, *args,
|
89
|
-
&block)
|
91
|
+
def add(attribute, msg = nil, *args, &block)
|
90
92
|
# jeffp: setting @current_validation_fields and use of should_validate? optimizes code
|
91
93
|
add_error = @base.respond_to?(:should_validate?) ? @base.should_validate?(attribute.to_sym) : true
|
92
|
-
|
93
|
-
end
|
94
|
-
|
95
|
-
def self.included(base) #:nodoc:
|
96
|
-
base.class_eval do
|
97
|
-
alias_method_chain :add, :validation_group
|
98
|
-
end
|
94
|
+
super if add_error
|
99
95
|
end
|
100
96
|
end
|
101
97
|
end
|
@@ -116,7 +112,7 @@ module ValidationGroup
|
|
116
112
|
end
|
117
113
|
end
|
118
114
|
|
119
|
-
# jeffp: moved from init.rb for gemification purposes --
|
115
|
+
# jeffp: moved from init.rb for gemification purposes --
|
120
116
|
# require 'validation_group' loads everything now, init.rb requires 'validation_group' only
|
121
117
|
ActiveRecord::Base.send(:extend, ValidationGroup::ActiveRecord::ActsMethods)
|
122
|
-
ActiveModel::Errors.
|
118
|
+
ActiveModel::Errors.prepend ValidationGroup::ActiveRecord::Errors
|
data/test/test_helper.rb
CHANGED
@@ -11,21 +11,9 @@ require 'validation_group'
|
|
11
11
|
# jeffp: removed environment.rb reference for gemification purposes
|
12
12
|
# jeffp: added code to test in sqlite memory database - speedy tests
|
13
13
|
|
14
|
-
db_adapter =
|
15
|
-
|
16
|
-
|
17
|
-
'sqlite'
|
18
|
-
rescue MissingSourceFile
|
19
|
-
begin
|
20
|
-
require 'sqlite3'
|
21
|
-
'sqlite3'
|
22
|
-
rescue MissingSourceFile
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
if db_adapter.nil?
|
27
|
-
raise "No DB Adapter selected. Pass the DB= to pick one, or install Sqlite or Sqlite3."
|
28
|
-
end
|
14
|
+
db_adapter = 'sqlite3'
|
15
|
+
require 'rubygems'
|
16
|
+
require 'sqlite3'
|
29
17
|
|
30
18
|
ActiveRecord::Base.establish_connection({'adapter' => db_adapter, 'database' => ':memory:'})
|
31
19
|
#ActiveRecord::Base.logger = Logger.new("#{File.dirname(__FILE__)}/active_record.log")
|
@@ -51,4 +39,4 @@ class User < ActiveRecord::Base
|
|
51
39
|
validation_group :step1, :fields=>[:first_name, :last_name]
|
52
40
|
validation_group :step2, :fields=>[:username]
|
53
41
|
end
|
54
|
-
|
42
|
+
|
metadata
CHANGED
@@ -1,67 +1,131 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: validation_group
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
version: 0.1.3
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.0
|
6
5
|
platform: ruby
|
7
|
-
authors:
|
6
|
+
authors:
|
8
7
|
- Alex Kira
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
11
|
+
date: 2012-02-06 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: activerecord
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '5.2'
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '8'
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - ">"
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '5.2'
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '8'
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: bundler
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ">"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '1.17'
|
40
|
+
type: :development
|
41
|
+
prerelease: false
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - ">"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '1.17'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: rake
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">"
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0.8'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - ">"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '0.8'
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: sqlite3
|
63
|
+
requirement: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - ">="
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '0'
|
68
|
+
type: :development
|
69
|
+
prerelease: false
|
70
|
+
version_requirements: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - ">="
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '0'
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: test-unit
|
77
|
+
requirement: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - ">="
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '0'
|
82
|
+
type: :development
|
83
|
+
prerelease: false
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - ">="
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '0'
|
16
89
|
description: Validation groups for ActiveRecord
|
17
|
-
email:
|
90
|
+
email: ''
|
18
91
|
executables: []
|
19
|
-
|
20
92
|
extensions: []
|
21
|
-
|
22
93
|
extra_rdoc_files: []
|
23
|
-
|
24
|
-
|
94
|
+
files:
|
95
|
+
- ".gitignore"
|
96
|
+
- CHANGELOG.rdoc
|
97
|
+
- MIT-LICENSE
|
98
|
+
- Rakefile
|
99
|
+
- init.rb
|
100
|
+
- install.rb
|
25
101
|
- lib/validation_group.rb
|
102
|
+
- tasks/validation_group_tasks.rake
|
26
103
|
- test/database.yml
|
27
104
|
- test/schema.rb
|
28
105
|
- test/test_helper.rb
|
29
106
|
- test/validation_group_test.rb
|
30
|
-
- tasks/validation_group_tasks.rake
|
31
|
-
- CHANGELOG.rdoc
|
32
|
-
- init.rb
|
33
|
-
- install.rb
|
34
107
|
- uninstall.rb
|
35
|
-
- MIT-LICENSE
|
36
|
-
- Rakefile
|
37
|
-
- README
|
38
|
-
- .gitignore
|
39
108
|
homepage: http://github.com/akira/validationgroup/tree/master
|
40
109
|
licenses: []
|
41
|
-
|
110
|
+
metadata: {}
|
42
111
|
post_install_message:
|
43
112
|
rdoc_options: []
|
44
|
-
|
45
|
-
require_paths:
|
113
|
+
require_paths:
|
46
114
|
- lib
|
47
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
48
|
-
|
49
|
-
requirements:
|
115
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
116
|
+
requirements:
|
50
117
|
- - ">="
|
51
|
-
- !ruby/object:Gem::Version
|
52
|
-
version:
|
53
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
54
|
-
|
55
|
-
requirements:
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: '0'
|
120
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
56
122
|
- - ">="
|
57
|
-
- !ruby/object:Gem::Version
|
58
|
-
version:
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
59
125
|
requirements: []
|
60
|
-
|
61
|
-
rubyforge_project:
|
62
|
-
rubygems_version: 1.8.15
|
126
|
+
rubygems_version: 3.0.3.1
|
63
127
|
signing_key:
|
64
|
-
specification_version:
|
128
|
+
specification_version: 4
|
65
129
|
summary: Validation groups for ActiveRecord
|
66
|
-
test_files:
|
130
|
+
test_files:
|
67
131
|
- test/validation_group_test.rb
|
data/README
DELETED
@@ -1,33 +0,0 @@
|
|
1
|
-
ValidationGroup
|
2
|
-
===============
|
3
|
-
|
4
|
-
When doing multipage forms that spread a models fields over several pages, validation becomes more difficult. We would like to validate each step of the form, however, the rails validation run validation on all the fields. This plugin enables you to define validation groups with certain fields, and then only run validation on those groups.
|
5
|
-
|
6
|
-
Version: Rails 3. To use on Rails 2.x versions, use forked copy from https://github.com/jeffp/validationgroup
|
7
|
-
|
8
|
-
To install:
|
9
|
-
|
10
|
-
Add to your Gemfile:
|
11
|
-
|
12
|
-
gem 'validation_group', :git=>'git://github.com/akira/validationgroup.git'
|
13
|
-
|
14
|
-
Example
|
15
|
-
=======
|
16
|
-
|
17
|
-
class User < ActiveRecord::Base
|
18
|
-
validates_presence_of :name, :description, :address, :email
|
19
|
-
|
20
|
-
validation_group :step1, :fields=>[:name, :description]
|
21
|
-
validation_group :step2, :fields=>[:address]
|
22
|
-
end
|
23
|
-
|
24
|
-
This will run validation on :step1 fields
|
25
|
-
@user = User.new
|
26
|
-
@user.enable_validation_group :step1
|
27
|
-
@user.valid?
|
28
|
-
|
29
|
-
You can later disable validation groups by calling:
|
30
|
-
@user.disable_validation_group
|
31
|
-
|
32
|
-
|
33
|
-
Copyright (c) 2007 Alex Kira, released under the MIT license
|