第一次在stackoverflow上发布smth,所以跳得足够清楚:)。
我已经构建了一个应用程序,您需要使用您的专业地址电子邮件进行注册,并且由于您的电子邮件域名,您将被重定向到您公司的组中。例如:如果我的电子邮件是example@companyone.com,我将被重定向到名为companyone的组。 现在,我希望允许具有不同域名电子邮件地址的人通过在我的管理控制台中的email_domain_name输入中添加第二个值来访问同一个组。我无法弄清楚......
这是我的代码:
管理员组模型:
f.inputs "Details" do
f.input :name
f.input :description
f.input :email_domain_name
f.input :slug
f.input :picture, as: :file
end
注册管理员:
def check_group_domain_name
unless Group.find_by(email_domain_name: Mail::Address.new(params[:user][:email]).domain)
flash[:notice] = t('users.sign_in.invalid')
end
end
模特用户:
def assign_to_group
self.group = Group.find_by(email_domain_name: Mail::Address.new(self.email).domain)
end
Email_validator:
class EmailValidator < ActiveModel::EachValidator
def validate_each(record, attribute, value)
domain_names = Group.all.pluck(:email_domain_name)
begin
m = Mail::Address.new(value)
r = m.domain!=nil && m.domain.match(Regexp.union(domain_names)) && m.address == value
rescue Exception => e
r = false
end
record.errors[attribute] << (options[:message] || "is invalid") unless
r
end
end
答案 0 :(得分:0)
您可以添加alt_email_domain_name字段,并在第一个失败时按其查找该组。用户是否需要拥有该备用域的有效电子邮件?对你正在努力实现的目标感到困惑。
或者,您可以在字段中允许使用逗号分隔的电子邮件域,拆分它们,并检查这两个域组。
答案 1 :(得分:0)