質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

799閲覧

「rails g scaffold diary title:string body:text」でファイルが生成されない。

wesker.alice

総合スコア45

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

1グッド

1クリップ

投稿2020/08/12 01:50

編集2020/08/12 02:28

前提・実現したいこと

前提
書籍「たった1日で基本が身に付くRuby on Rails」のチャプター6を学んでいます。
Scaffoldコマンドを実行する(P108)の部分を読み進めています。
実行結果を翻訳してみると
「「日記」という名前は、アプリケーションですでに使用されているか、Ruby on Railsによって予約されています。代替を選択するか、-forceを使用してこのチェックをスキップし、このジェネレータを再度実行してください。」
とあります。
確かに日記アプリを作るためにdiaryは使っています。それは書籍に沿って進めているためなので、違う名称(例:Diary以外)だと連携が取れなくなると推察するのですが、違う名称で「rails g scaffold 〇〇 title:string body:text」を実行しても良いのでしょうか?

実行したいこと
書籍の実行結果と同様の結果が得たいです。

発生している問題

> rails g scaffold diary title:string body:text invoke active_record The name 'Diary' is either already used in your application or reserved by Ruby on Rails. Please choose an alternative or use --force to skip this check and run this generator again.

該当のソースコード

「rails g scaffold diary title:string body:text」のコマンドを実行すると以下のような結果になるらしいのですが、実行すると上記のような「発生している問題」のような結果になります。(書籍の実行結果)

> rails g scaffold diary title:string body:text invoke active_record identical db/migrate/20170807093803_create_diaries.rb identical app/models/diary.rb invoke test_unit identical test/models/diary_test.rb conflict test/fixtures/diaries.yml Overwrite /Users/200085/sandbox/rails/rails5_sample_for_book/test/fixtures/ diaries.yml? (enter "h" for help)[Ynaqdh]n skip test/fixtures/diaries.yml 中略 create app/assets/stylesheets/scaffolds.scss

試したこと

もしかしたら記述コードのミスが原因かと思い、コードを見直しながら再度入力して実行してみましたが、結果は変わりませんでした。

補足情報(FW/ツールのバージョンなど)

Ruby 2.6.3p62
Rails 6.0.3.2
macOS Catalina 10.15.6
VSCOde 1.47.3

nyankonenn👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gouf

2020/08/12 05:24

「rails g scaffold diary title:string body:text --force」と「--force」を付けた場合、なにか変化は見られますか? (今回は 作りたい内容が同じなので、上書きしてしまっても問題ないはずです)
wesker.alice

2020/08/12 05:28

ご回答ありがとうございます! 「rails g scaffold diary title:string body:text --force」を実行したら無事クリエイトされました! > rails g scaffold diary title:string body:text --force invoke active_record identical db/migrate/20200809045524_create_diaries.rb identical app/models/diary.rb invoke resource_route route resources :diaries invoke scaffold_controller create app/controllers/diaries_controller.rb invoke erb create app/views/diaries create app/views/diaries/index.html.erb create app/views/diaries/edit.html.erb create app/views/diaries/show.html.erb create app/views/diaries/new.html.erb create app/views/diaries/_form.html.erb invoke helper create app/helpers/diaries_helper.rb invoke jbuilder create app/views/diaries/index.json.jbuilder create app/views/diaries/show.json.jbuilder create app/views/diaries/_diary.json.jbuilder invoke assets invoke scss create app/assets/stylesheets/diaries.scss invoke scss create app/assets/stylesheets/scaffolds.scss 以上の内容が書き出されました。
gouf

2020/08/12 05:39

解決した場合、他者の回答ないし自己回答として内容をまとめて それをベストアンサーに設定することで、この質問を解決済みにすることができます
wesker.alice

2020/08/12 05:57

no1knowsさんも同様のご回答で上書きオプションにて対応と書かれていたので、ベストアンサーとさせていただきます。 goufさんも解決法を提示していただき、ありがとうございます。 助かりました。
guest

回答1

0

ベストアンサー

The name 'Diary' is either already used in your application

と言われています。
既に Diary がどこかに定義されてませんか? 
一番怪しいのは app/models/diary.rb

投稿2020/08/12 02:13

winterboum

総合スコア23347

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wesker.alice

2020/08/12 02:22

app/models/diary.rbには下記内容が記述されています。 ``` class Diary < ApplicationRecord end ``` この場合、diary.rb自体のファイルを削除して、再度「rails g scaffold diary title:string body:text」を実行しても良いものでしょうか?
maisumakun

2020/08/12 02:30

そのdiary.rbは、どういう経緯で作成したものですか?
winterboum

2020/08/12 02:35

diary.rb自体のファイルを削除して良いかどうかはmaisumakunさんの質問の答え次第です
wesker.alice

2020/08/12 02:42

「モデル/マイグレーションを新規作成する」という項目でrails g modelコマンドの実行をしました。 rails g model Diary title:string body:text を実行した際に、 -------------------------------------------------------- invoke active_record create db/migrate/日付_create_diaries.rb create app/models/diaries.rb(←この部分) invoke test_unit create test/models/diary_test.rb create test/fixtures/diaries.yml -------------------------------------------------------- が作成された中に含まれていました。 書籍を一部抜粋すると rails g modelコマンドを実行してモデルクラスと対応するテーブルを作成するためのマイグレーションファイルを作成します。ここでは後ほど開発する日記アプリ用に使うDiaryモデルクラスを作成します。日記には、タイトルと本文があるのが一般的です。 とのこと。
maisumakun

2020/08/12 02:44 編集

scaffoldはモデルの作成も含みますので、すでにrails g modelでモデルを作成しているのであれば、行うのは適当ではありません。
maisumakun

2020/08/12 02:44

(テキストの手順を正しく辿れていない、ということはないでしょうか?)
winterboum

2020/08/12 02:45

この操作「rails g model Diary title:string body:text」 と この操作「rails g scaffold diary title:string body:text」とを 行わせるはずがないので、(ご覧のエラーが起きますから) いろんな手引をごちゃまぜしてませんか? どちらかの手引に「のみ」したがってください
wesker.alice

2020/08/12 04:47

書籍には 「rails g scaffold diary title:string body:text」を実行する際に 『ここでは日記アプリ用のリソースを指定するため、リソース名にdiaryを指定して実行します。実行途中で、チャプター5で修正したフィクスチャファイルを上書きするか確認されるので、ここでは上書きしない「n」を入力します。実行の結果、rails g modelコマンドで作成したモデルとテーブル定義のためのファイル以外に、新しいルーティングが追加されたり、コントローラーやビューファイル、アセットなどが新規作成されている事が確認できます。』 と書かれており、チャプター5で実行した「rails g model Diary title:string body:text」の引き続きでやるものとばかり思っていたのですが、どちらに従うべきなのか判断がつかないのですが、その場合、先に実行していた「rails g model Diary title:string body:text」で、「rails g scaffold diary title:string body:text」はスルーしても良いですか?
winterboum

2020/08/12 05:08

maisumakunさん 私の不勉強でしょうか 「rails g model Diary title:string body:text」 と 「rails g scaffold diary title:string body:text」とを 行って問題ないってことが有りますか? railsや scaffold の新しいversionではOKとか有りますか?
no1knows

2020/08/12 05:44

たった1日では基本が身につかなかったですが、手元に書籍がありました。 modelを作って、そのあと確かにscaffoldを実行せよと書かれています・・・みなさん不思議がっているように通常はやらないですね。 チャプター5のデータを流用したいという意図のようなので、一度、発生している問題の中に書いてある解決方法 --force(既存のファイルの上書き実行オプション)を利用して、 rails g scaffold --force Diary title:string body:text を実行して書籍を進めていき、今後、テストデータなどが必要になった段階で、チャプター5の内容を追記する形で良いかと思いますがいかがでしょうか?
wesker.alice

2020/08/12 05:54

ご回答ありがとうございます。 通常はやらない方法なのですね。 テストデータなどが必要になった場合にそうすることにします。 よく理解できず戸惑っていましたが、書籍の内容がアブノーマルだというケースもあると学べてよかったです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問