无法使用rake db:seed for Rails 3.0创建Devise帐户

时间:2011-01-08 16:22:39

标签: ruby-on-rails rake devise

我正在尝试使用rake db:seed预先加载所有设备帐户。所有其他模型的数据似乎都插入到数据库中,但由于某种原因,没有为使用设计的Person模型创建行。从Web界面注册工作正常,但我想避免手动创建帐户,这就是我使用rake db:seed的原因。我从通过Web界面创建的帐户中复制了encrypted_pa​​ssword,password_salt。请让我知道如何解决这个问题?非常感谢..

people = Person.create(
                        :email => 'nnn@gmail.com',
                        :encrypted_password => '$2a$10$SyacAOhJQtVeTcTPYm.ROuFbhGMylfj4fLrK3NHyeRwfEokKp2NVW',
                        :password_salt => '$2a$10$SyacAOhJQtVeTcTPYm.ROu',
                        :first_name => "nnn",
                        :last_name => "yyy"
                       )


in routes.rb i have.

    devise_for :people

3 个答案:

答案 0 :(得分:24)

我过去使用Devise做过这个。我没有尝试设置加密密码和盐。我只是设置密码和确认这样的东西(我没有我的项目方便):

Person.create(:email => 'nnn@gmail.com', :password => 'foobar', :password_confirmation => 'foobar', :first_name => 'nn', :last_name => 'yy')

试试。

答案 1 :(得分:4)

很可能“create”方法由于模型验证而悄然失败,因此返回false。如果您使用“创建!”,您将会出错。而是( with exclamation ) - 如果验证失败,此方法会引发异常。

在您的情况下验证失败的可能原因是(默认为Devise )最小密码长度为6个字符,而您根本没有提供密码。

答案 2 :(得分:0)

如果您在多次运行rake db:seed时不想要重复:

User.create(
  email: email,
  password: password,
  password_confirmation: password
) unless User.where(email: email).exists?