0

私は自分のアプリをHerokuでテストしています(これはすごいです!)、rootユーザーを作成する方法がないことに気付きました。

Authlogic と rails_authorization_plugin を使用しています。

移行ファイルの 1 つにセクションを追加して、このユーザーを追加し、その役割を割り当てることができる方法はありrootますか? または、rake タスクでこれを行うことはできますか?

どんな洞察もいただければ幸いです!

4

2 に答える 2

5

移行によって確実にそれを行うことができます。私は、必要なシード データをアプリケーションのデータベースに追加するための推奨される方法として見てきました。移行は単なる 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 を使用したことがないため、そのユーザー モデルがどのように機能するか正確にはわかりませんが、できるはずです。ここから解きます。

もう 1 つの一般的なパターンは、ダウン マイグレーションでテーブルを完全にクリアし、アップ マイグレーションで実行前にダウン マイグレーションを呼び出すことです。ただし、この場合、それはおそらくあなたが望むものではありません。

于 2009-10-13T20:38:23.400 に答える
2

rakeタスクを設定して、ユーザー(およびその他のシードデータ)をブートストラップすることができます。Herokuを使用すると、実際にrakeタスクを実行できます:http ://docs.heroku.com/rake

または、1回限りとして、ローカルでユーザーを作成し、を使用してデータベースをherokuにアップロードできますheroku db:push。ここのドキュメント:http ://docs.heroku.com/taps#import-push-to-heroku

また、データのみの移行には反対することをお勧めします。Railsコアにはシードデータレーキタスクもあります。railscastとこの投稿を参照してください。

于 2009-10-13T20:30:10.513 に答える