私は自分のアプリをHerokuでテストしています(これはすごいです!)、root
ユーザーを作成する方法がないことに気付きました。
Authlogic と rails_authorization_plugin を使用しています。
移行ファイルの 1 つにセクションを追加して、このユーザーを追加し、その役割を割り当てることができる方法はありroot
ますか? または、rake タスクでこれを行うことはできますか?
どんな洞察もいただければ幸いです!
私は自分のアプリをHerokuでテストしています(これはすごいです!)、root
ユーザーを作成する方法がないことに気付きました。
Authlogic と rails_authorization_plugin を使用しています。
移行ファイルの 1 つにセクションを追加して、このユーザーを追加し、その役割を割り当てることができる方法はありroot
ますか? または、rake タスクでこれを行うことはできますか?
どんな洞察もいただければ幸いです!
移行によって確実にそれを行うことができます。私は、必要なシード データをアプリケーションのデータベースに追加するための推奨される方法として見てきました。移行は単なる 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 つの一般的なパターンは、ダウン マイグレーションでテーブルを完全にクリアし、アップ マイグレーションで実行前にダウン マイグレーションを呼び出すことです。ただし、この場合、それはおそらくあなたが望むものではありません。
rakeタスクを設定して、ユーザー(およびその他のシードデータ)をブートストラップすることができます。Herokuを使用すると、実際にrakeタスクを実行できます:http ://docs.heroku.com/rake
または、1回限りとして、ローカルでユーザーを作成し、を使用してデータベースをherokuにアップロードできますheroku db:push
。ここのドキュメント:http ://docs.heroku.com/taps#import-push-to-heroku
また、データのみの移行には反対することをお勧めします。Railsコアにはシードデータレーキタスクもあります。railscastとこの投稿を参照してください。