使用设备的用户播种数据库失败:ActiveRecord :: RecordInvalid:验证失败:电子邮件无效

时间:2017-03-03 09:42:27

标签: ruby-on-rails ruby devise

我正在尝试运行一个简单的循环来创建多个种子用户:

在seeds.rb中:

5.times do
    user = User.new(
        email: RandomData.random_space_email, 
        password: 'teatea', 
        password_confirmation: 'teatea'
    )
    user.skip_confirmation!
    user.save!
end

RandomData.random_space_email:

def self.random_space_email
    "#{@@names.sample}@#{@@space_words.sample}.#{@@space_words.sample}"
end

当我运行rake db:reset时,我收到此错误:ActiveRecord::RecordInvalid: Validation failed: Email is invalid

但是,如果我将循环设置为仅运行一次(1.times do),一切都按预期工作。

任何帮助都会很精彩!

1 个答案:

答案 0 :(得分:0)

仔细检查后:

def self.random_space_email
    "#{@@names.sample}@#{@@space_words.sample}.#{@@space_words.sample}"
end

我发现@@space_words有时包含带空格的字符串......这似乎导致devise抛出错误,因为电子邮件地址中不能有空格。