Rails根据用户的电子邮件地址设置学校属性?

时间:2014-07-27 21:52:37

标签: ruby-on-rails regex email ruby-on-rails-4

在我的Rails应用程序中,我有一个正则表达式,确保只有@ uw.edu或@ berkeley.edu电子邮件地址可以在用户#registration上使用。我现在要做的是自动设置用户所在的学校,这取决于哪些域名是他们的电子邮件地址。因此,例如,如果某人使用@ berkeley.edu电子邮件注册,则用户模型中的学校属性将设置为“加州大学伯克利分校”。

我尝试过这样做,但这似乎是一个非常重要的问题。这是用户模型中的正则表达式的样子(我还没有添加UW.edu,但你明白了):

berkeley_regex = /\A[\w+\-.]+@berkeley\.edu\z/i
validates :email, :presence => true, :format => {:with => berkeley_regex}

我也已在User模型中添加了“school”列。如果有人能告诉我如何做我想做的事情那就太棒了。

我试过了:

def match
    matches = User['email'].match(/(?<uw>.*?uw\.edu)|((?<berk>.*?berkeley\.edu))/i)
    school = 'uw' if matches['uw'].present?
    school = 'berk' if matches['berkeley'].present?
  end

和before_validation:匹配在顶部,但它给了我错误

#Class的未定义方法`[]':0x008fe1a995

使用before_save结果相同。如何在用户注册时收到用户的电子邮件?

1 个答案:

答案 0 :(得分:1)

为什么你不在before_save hook中做这样的事情

matches = params['email'].match(/(?<uw>.*?uw\.edu)|((?<berk>.*?berkeley\.edu))/i)
school = 'uw' if matches['uw'].present?
school = 'berk' if matches['berkeley'].present?

你做完了吗?