Заполнение пользователя restful_authentication в seed.rb - PullRequest
4 голосов
/ 25 февраля 2010

Я почти уверен, что понимаю, как работает seeding в отношении seed.rb, но я не могу использовать его для вставки restful_authentication объекта User в базу данных.

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

Я что-то упустил?

Изменить: Я также попытался добавить подтверждение пароля. Все еще ничего.

Ответы [ 3 ]

2 голосов
/ 25 февраля 2010

Попробуйте User.create!(), используя те же параметры). Это покажет вам любые ошибки проверки в консоли.

1 голос
/ 25 февраля 2010

Вы включили уведомление? Если да, то модель User пытается отправить уведомление по электронной почте. Если вы не настроили свой почтовый сервер, операция создания потерпит неудачу.

Мне пришлось сделать следующее, чтобы обойти проблему.

1 Изменение модели пользователя

Добавить виртуальный атрибут с именем dont_notify.

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

2 Измените код наблюдателя, чтобы определить атрибут.

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
         )
1 голос
/ 25 февраля 2010

Подтверждение пароля?

...