Skip to content

Commit 3733efd

Browse files
committed
Procs for validations
1 parent 61bccc4 commit 3733efd

File tree

2 files changed

+14
-33
lines changed

2 files changed

+14
-33
lines changed

app/models/float_field_type.rb

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ class FloatFieldType < FieldType
22
attr_accessor :float
33

44
validates_numericality_of :float
5-
validate :less_than, if: :validate_min?
6-
validate :greater_than, if: :validate_max?
5+
validate :less_than, if: Proc.new { |int| validate_key(:max) }
6+
validate :greater_than, if: Proc.new { |int| validate_key(:min) }
77

88
def data=(data_hash)
99
@float = data_hash.deep_symbolize_keys[:float]
@@ -25,24 +25,15 @@ def mapping_field_name
2525
"#{field_name.parameterize('_')}_float"
2626
end
2727

28+
def validate_key(key)
29+
@validations.key? key
30+
end
31+
2832
def less_than
2933
errors.add(:float, "must be less_than #{@validations[:max]}") if :float <= @validations[:max]
3034
end
3135

3236
def greater_than
3337
errors.add(:float, "must be greater_than #{@validations[:min]}") if :float >= @validations[:min]
3438
end
35-
36-
def validate_max?
37-
@validations.key? :max
38-
end
39-
40-
def validate_min?
41-
@validations.key? :min
42-
end
43-
44-
def valid_presence_validation?
45-
@validations.key? :presence
46-
end
47-
4839
end

app/models/integer_field_type.rb

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
class IntegerFieldType < FieldType
22
attr_accessor :integer
33

4-
validates :integer, presence: true, if: :validate_presence?
54
validates_numericality_of :integer
6-
validate :less_than, if: :validate_min?
7-
validate :greater_than, if: :validate_max?
5+
validate :less_than, if: Proc.new { |int| validate_key(:max) }
6+
validate :greater_than, if: Proc.new { |int| validate_key(:min) }
87

98
def data=(data_hash)
109
@integer = data_hash.deep_symbolize_keys[:integer]
@@ -26,24 +25,15 @@ def mapping_field_name
2625
"#{field_name.parameterize('_')}_integer"
2726
end
2827

29-
def less_than
30-
errors.add(:integer, "must be less_than #{@validations[:max]}") if :integer <= validations[:max]
31-
end
32-
33-
def greater_than
34-
errors.add(:integer, "must be greater_than #{@validations[:min]}") if :integer >= validations[:min]
28+
def validate_key
29+
@validations.key? key
3530
end
3631

37-
def validate_max?
38-
@validations.key? :max
32+
def less_than
33+
errors.add(:integer, "must be less_than #{@validations[:max]}") if :integer <= @validations[:max]
3934
end
4035

41-
def validate_min?
42-
@validations.key? :min
43-
end
44-
45-
def valid_presence_validation?
46-
@validations.key? :presence
36+
def greater_than
37+
errors.add(:integer, "must be greater_than #{@validations[:min]}") if :integer >= @validations[:min]
4738
end
48-
4939
end

0 commit comments

Comments
 (0)