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 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'
@@ -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
- # nice
80
- def valid_with_validation_group?(group=nil)
84
+ def valid?(group=nil)
81
85
  self.enable_validation_group(group) if group
82
- valid_without_validation_group?
86
+ super
83
87
  end
84
88
  end
85
89
 
86
90
  module Errors # included in ActiveRecord::Errors
87
- def add_with_validation_group(attribute,
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
- add_without_validation_group(attribute, msg, *args, &block) if add_error
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.send :include, ValidationGroup::ActiveRecord::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 = ENV['DB'] || begin
15
- require 'rubygems'
16
- require 'sqlite'
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
- prerelease:
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
- date: 2012-02-06 00:00:00 Z
14
- dependencies: []
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
- files:
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
- none: false
49
- requirements:
115
+ required_ruby_version: !ruby/object:Gem::Requirement
116
+ requirements:
50
117
  - - ">="
51
- - !ruby/object:Gem::Version
52
- version: "0"
53
- required_rubygems_version: !ruby/object:Gem::Requirement
54
- none: false
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: "0"
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: 3
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