Class: MiniDefender::Rules::Luhn
Class Method Summary
collapse
Instance Method Summary
collapse
#active?, available?, #bails?, #default_value, #defaults?, #error_message, #excluded?, #force_coerce?, #implicit?, make, #priority, #stops?, #with_message
Class Method Details
.signature ⇒ Object
4
5
6
|
# File 'lib/mini_defender/rules/luhn.rb', line 4
def self.signature
'luhn'
end
|
.valid_luhn?(value) ⇒ Boolean
8
9
10
11
12
13
14
15
16
17
18
19
20
|
# File 'lib/mini_defender/rules/luhn.rb', line 8
def self.valid_luhn?(value)
value = value.to_s
return false unless value.match?(/\A\d+\z/)
double_sum = [0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
sum = 0
value.to_i.digits.each_with_index do |digit, index|
sum += index.even? ? digit : double_sum[digit]
end
sum % 10 === 0
end
|
Instance Method Details
#coerce(value) ⇒ Object
22
23
24
|
# File 'lib/mini_defender/rules/luhn.rb', line 22
def coerce(value)
value.to_s
end
|
#message(attribute, value, validator) ⇒ Object
30
31
32
|
# File 'lib/mini_defender/rules/luhn.rb', line 30
def message(attribute, value, validator)
'The value must be a valid Luhn string.'
end
|
#passes?(attribute, value, validator) ⇒ Boolean
26
27
28
|
# File 'lib/mini_defender/rules/luhn.rb', line 26
def passes?(attribute, value, validator)
value.is_a?(String) && self.class.valid_luhn?(value)
end
|