sequel_sexy_validations 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.2
1
+ 0.2.3
@@ -12,14 +12,14 @@ module Sequel
12
12
  module ClassMethods
13
13
  def validates(attribute = nil, validations = nil, &block)
14
14
  if validations
15
- case validations[:if]
16
- when :new
17
- validations[:if] = lambda { |record| record.new? }
15
+ if validations[:if]
16
+ validations[:if] = [validations[:if]] unless validations[:if].is_a?(Array)
17
+ implement_special_validation_conditions!(validations[:if])
18
18
  end
19
19
 
20
- case validations[:unless]
21
- when :new
22
- validations[:unless] = lambda { |record| record.new? }
20
+ if validations[:unless]
21
+ validations[:unless] = [validations[:unless]] unless validations[:unless].is_a?(Array)
22
+ implement_special_validation_conditions!(validations[:unless])
23
23
  end
24
24
  end
25
25
 
@@ -34,6 +34,23 @@ module Sequel
34
34
  super
35
35
  end
36
36
  end
37
+
38
+ private
39
+
40
+ def implement_special_validation_conditions!(validations)
41
+ validations.each_with_index do |validation, i|
42
+ case validation
43
+ when :new
44
+ validations[i] = lambda do |record, attribute|
45
+ record.new?
46
+ end
47
+ when :changed
48
+ validations[i] = lambda do |record, attribute|
49
+ record.changed_columns.include?(attribute)
50
+ end
51
+ end
52
+ end
53
+ end
37
54
  end
38
55
 
39
56
  module InstanceMethods
@@ -0,0 +1,23 @@
1
+ # encoding: utf-8
2
+ require "sexy_validations/validators/presence"
3
+
4
+ module Sequel
5
+ module Plugins
6
+ module SexyValidations
7
+ module Validators
8
+ class Presence < ::SexyValidations::Validators::Presence
9
+ def self.validate(model, attribute, value, options)
10
+ real_value = case value.class.name
11
+ when "Sequel::Plugins::Paperclip::Attachment"
12
+ value.queued_file
13
+ else
14
+ value
15
+ end
16
+ super(model, attribute, real_value, options)
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+
@@ -7,8 +7,6 @@ module Sequel
7
7
  def self.validate(model, attribute, value, options)
8
8
  return unless value
9
9
 
10
- return unless model.changed_columns.include?(attribute)
11
-
12
10
  unless options.is_a?(Hash)
13
11
  options = {
14
12
  :scope => options,
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{sequel_sexy_validations}
8
- s.version = "0.2.2"
8
+ s.version = "0.2.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Corin Langosch"]
12
- s.date = %q{2010-09-28}
12
+ s.date = %q{2010-09-29}
13
13
  s.description = %q{Sequel plugin which provides sexy validations for model.}
14
14
  s.email = %q{info@netskin.com}
15
15
  s.extra_rdoc_files = [
@@ -24,6 +24,7 @@ Gem::Specification.new do |s|
24
24
  "Rakefile",
25
25
  "VERSION",
26
26
  "lib/sequel_sexy_validations.rb",
27
+ "lib/sequel_sexy_validations/validators/presence.rb",
27
28
  "lib/sequel_sexy_validations/validators/uniqueness.rb",
28
29
  "sequel_sexy_validations.gemspec",
29
30
  "spec/sequel_sexy_validations_spec.rb",
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 2
8
- - 2
9
- version: 0.2.2
8
+ - 3
9
+ version: 0.2.3
10
10
  platform: ruby
11
11
  authors:
12
12
  - Corin Langosch
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-09-28 00:00:00 +01:00
17
+ date: 2010-09-29 00:00:00 +01:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -64,6 +64,7 @@ files:
64
64
  - Rakefile
65
65
  - VERSION
66
66
  - lib/sequel_sexy_validations.rb
67
+ - lib/sequel_sexy_validations/validators/presence.rb
67
68
  - lib/sequel_sexy_validations/validators/uniqueness.rb
68
69
  - sequel_sexy_validations.gemspec
69
70
  - spec/sequel_sexy_validations_spec.rb