Rails: создать по умолчанию пользователя root через миграцию? Грабли задача? - PullRequest
0 голосов
/ 14 октября 2009

Я тестирую свое приложение на Heroku (что, черт возьми, потрясающе!), И я понял, что у меня нет возможности создать моего root пользователя.

Я использую Authlogic и rails_authorization_plugin.

Можно ли как-то добавить раздел в один из моих файлов миграции, чтобы добавить этого пользователя и назначить ему роль root? Или я могу сделать это через грабли?

Любое понимание будет оценено!

Ответы [ 2 ]

5 голосов
/ 14 октября 2009

Конечно, вы можете сделать это путем миграции, и я считаю, что это рекомендуемый способ добавления необходимых начальных данных в базу данных приложения. Миграции - это просто код ruby, так что все довольно просто. Вы можете использовать все элементы ActiveRecord, к которым вы привыкли, и делать что-то вроде:

class AddRootUser < ActiveRecord::Migration
  def self.up
    user = User.create!( :email => '...', :login => 'root', :password => '...' )
  end

  def self.down
    user = User.find_by_login( 'root' )
    user.destroy
  end
end

Я пропустил то, что вы, вероятно, захотите сделать, например, спасение от неудачи при создании пользователя и т. Д. Кроме того, я не использовал AuthLogic, поэтому не знаю точно, как работает его пользовательская модель, но вы должно быть в состоянии понять это отсюда.

Еще одна распространенная модель - это полная миграция вниз, чтобы очистить таблицу, и чтобы миграция вверх вызывала миграцию вниз перед запуском. Это, вероятно, не то, что вы хотите в этом случае.

2 голосов
/ 14 октября 2009

Вы можете настроить задачу rake для начальной загрузки пользователя (и любых других начальных данных). На самом деле Heroku позволяет запускать грабли: http://docs.heroku.com/rake

Или, как один раз, вы можете создать пользователя локально и загрузить свою базу данных в heroku, используя heroku db:push. Документы здесь: http://docs.heroku.com/taps#import-push-to-heroku

Кроме того, я предлагаю против данных только миграции. В ядре Rails есть даже начальная задача по сбору данных. Смотрите Railscast и этот пост .

...