email_domain_inclusion 1.0.1 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/email_domain_inclusion/version.rb +1 -1
- data/lib/email_domain_inclusion.rb +8 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6693a7481613ac7e5d8021b5d3aaf682c6f82dac
|
4
|
+
data.tar.gz: efb361f0b7a53f03692653c660dc4c90135a1d14
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0439b71550c1d0f4524a9d8a852ab3add86522d9e95fc2a4cea4ef39ad0457fa07aadda830149345dcc53da72d93fa6711138ad2e81eebf561d11c00d5486ec7
|
7
|
+
data.tar.gz: 25135bf01635e1b8635f23d29b6723146b5fb81ac7c425670feb0e341857abfb622390f71ccd9a5bea2b3515f42b0a5593065eeb57beebd1a024ce13500f730e
|
@@ -6,10 +6,17 @@ require "email_domain_inclusion/version"
|
|
6
6
|
class EmailDomainInclusionValidator < ActiveModel::EachValidator
|
7
7
|
def validate_each(record, attribute, value)
|
8
8
|
domains = options[:allowed_domains]
|
9
|
-
domain = Mail::Address.new(value).try(:domain).try(:downcase)
|
10
9
|
domains = domains.call if domains.respond_to?(:call)
|
10
|
+
domain = domain_from_email(value)
|
11
11
|
unless domains.include?(domain)
|
12
12
|
record.errors[attribute] << options[:message] || "domain_not_in_list"
|
13
13
|
end
|
14
14
|
end
|
15
|
+
|
16
|
+
private
|
17
|
+
def domain_from_email(email)
|
18
|
+
Mail::Address.new(email).try(:domain).try(:downcase)
|
19
|
+
rescue Mail::Field::ParseError
|
20
|
+
nil
|
21
|
+
end
|
15
22
|
end
|