Techioz Blog

Rails でコントローラーの名前を変更し、生成されたコンテンツを削除する

概要

私はrestful_authenticationプラグインに関するrailscastに従っていました。

彼は次のコマンドを実行することを推奨しました。

スクリプト/認証されたユーザーセッションを生成する

これを実行すると、すべてが「正常」に生成されましたが、セッションが機能しなくなります。サイトを再度チェックすると、彼は命名標準について言及し、次のように更新されたコードをリストしました。

スクリプト/認証されたユーザーセッションを生成する

セッションが複数化されている。

それで、現在、SessionControllerを含むsession_controller.rbがありますが、標準に名前を付けることで、SessionsControllerを探しているため、「NameError in SessionsController#create」というエラーでコードが失敗します。

問題は明らかですが、コンテンツを再生成せずにこれを修正するにはどうすればよいでしょうか?生成プロセスを逆にして、その世代によって行われたすべての変更をクリアする方法はありますか?

SessionsControllerクラスを使用してファイルの名前をsessions_controllerに変更しようとしましたが、失敗しました。

これを書きながら、私自身の問題を解決しました。ルートファイル内のセッション名をmap.resourceとしてセッションに変更し、ビューディレクトリの名前をセッションからセッションに変更し、html.erbファイル内のsession_pathをsessions_pathに更新する必要がありました。

それで問題は解決しましたが、生成されたコンテンツの削除に関する答えはまだ残っています。コンテンツを生成しないようにすることはできますか?

解決策

実際、script/destroy はどのジェネレーターでも機能します。ジェネレーターは、作成するファイルに関する一種のスクリプトを読み取ることによって機能します。 script/destroy は、script/generate に渡したものと同じ引数を指定する限り、そのスクリプトを逆に読み取り、作成されたすべてのファイルを削除します。

要約すると、script/destroy 認証されたユーザー セッションでは、生成されたすべてのファイルが削除され、その後 script/generate ユーザー セッションを問題なく実行できます。