根据角色设计用户注册验证

时间:2014-03-21 20:21:54

标签: ruby-on-rails-4 devise

我是Rails和编程的新手。我正在使用Devise进行注册,并拥有一个具有两个角色的用户模型:project_manager和sales。

注册后,如果用户选择project_manager,我希望注册继续照常。如果选择了销售,我需要针对白名单检查电子邮件域。

最初,我能够使用两个单独的模型来设计和验证Sales模型的电子邮件格式:

validates_format_of :email, :with => /\A([^@\s]+)@(company\.com)|(work\.com)\z/

在创建用户记录之前,我无法弄清楚如何根据所选角色运行此验证。

2 个答案:

答案 0 :(得分:0)

validates_format_of :email, :with => /\A([^@\s]+)@(company\.com)|(work\.com)\z/, if: ->{ |user| user.role == 'sale' }

答案 1 :(得分:0)

validates :email, format: { with: /\A([^@\s]+)@(company|work)\.com\z/i }, if: ->(user) { user.role == 'sale' }