user595419
user595419

Reputation:

Is there way to validate emails on signup based on the domain in Rails?

Example:

Accepted extensions: "@blogsllc.org"

A user signs up with the email "[email protected]" would be able to create an account.

Wondering what would be the best way to do this in Rails and how others would approach this? I imagined trying to check the format of the email address against a bunch of regular expressions but this could be tedious as the list of supported extensions grow.

The other way to do this would be to have a database of the supported extensions and check the created email address against the database to see if the extension is accepted but I'm not sure what would be the best way to implement this in Rails.

I'm looking to implement something similar to what Facebook did in it's early days.

Any help appreciated.

Upvotes: 0

Views: 58

Answers (2)

Amadan
Amadan

Reputation: 198324

EDIT for misunderstanding:

If you don't need anything more fancy than a straight-up match of the domain (files have extensions, emails have domains), just splitting on @ and matching the second part with a database column is the easiest way.

Upvotes: 2

Mohammad Sadiq Shaikh
Mohammad Sadiq Shaikh

Reputation: 3200

You can add the following code

class EmailValidator < ActiveModel::EachValidator
 def validate_each(record, attribute, value)
  unless value =~ /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i
   record.errors[attribute] << (options[:message] || "is not an email")
  end
 end
end

class Person < ActiveRecord::Base
 validates :email, :presence => true, :email => true
end

This Link will be useful

Upvotes: 0

Related Questions