在seeds.rb中播种restful_authentication用户

时间:2010-02-25 03:42:59

标签: ruby-on-rails restful-authentication seed

我很确定我理解seed.rb的播种工作,但我似乎无法使用它将 restful_authentication 用户对象粘贴到数据库中。

User.create(:login => 'admin',
            :role => Role.find_by_name('super_admin'),
            :email => 'admin@example.com',
            :password => '123123')

我错过了什么吗?

编辑:我也尝试添加密码确认。仍然没有。

3 个答案:

答案 0 :(得分:2)

使用相同的参数尝试User.create!()。这将在控制台中显示任何验证错误。

答案 1 :(得分:1)

密码确认?

答案 2 :(得分:1)

您是否已启用通知?如果是这样,User模型正在尝试发送 电子邮件通知。如果尚未配置电子邮件服务器,则执行create操作 会失败。

我必须做以下事情来解决这个问题。

1修改用户模型

添加名为dont_notify的虚拟属性。

class User < ActiveRecord::Base
   # add a attribute
   attr_accessor dont_notify
end

2更改Observer代码以检测属性。

class UserObserver < ActiveRecord::Observer

  def after_create(user)
    return if user.dont_notify? #notice this line 
    UserMailer.deliver_signup_notification(user)
  end

  def after_save(user)
    return if user.dont_notify? #notice this line
    UserMailer.deliver_activation(user) if user.recently_activated?
  end
end

3在播种期间设置dont_notify标志

在你seed.rb设置标志。

User.create(:login => 'admin',
            :role => Role.find_by_name('super_admin'),
            :email => 'admin@example.com',
            :password => '123123',
            :password_confirmation => '123123',
            :dont_notify => true
         )