Ruby on Rails [Model-Controller-View]
Modelの作成
VS Codeで「rails new」 で作成したアプリのフォルダを開きます。
「rails generate model モデル名 項目1:型 項目2:型 ...」のような形でコマンドを実行します。
rails generate model book title:string price:integer
上記は「モデル名=book」でフィールドとして「書名」と「価格」を持たせています。
実行すると \app\models\book.rb \db\migrate\yyyyMMddHHmmss_create_books.rb \test\fixtures\books.yml \models\book_test.rb
など複数ファイルが作成されます。
次にデータベースにテーブルを作成します。
上記「\db\migrate\yyyyMMddHHmmss_create_books.rb」を使用します。
rails db:migrate
これで勝手にbooksテーブルが作成されます(^^)
Railsが「yyyyMMddHHmmss_create_books.rb」を見つけてきて勝手に実行してくれるらしい...(笑)
「yyyyMMddHHmmss_create_books.rb」が何かというと、テーブル作成するためのコードで
「rails generate model book title:string price:integer」で指定した「書名」「価格」をカラムに持つ
booksというテーブルを作りますと書かれたコード。たぶん。
なんでbookに勝手にsが付いているのかは謎です(_*;
テーブルを作ったのでちょっとだけデータを入れます。
「\test\fixtures\books.yml」を使います。 おそらく何件か既に記述されていると思いますが、変更するのであれば"yml"の書き方に従って変更してください。 以下コードでファイルの内容がbooksにインサートされます。
rake db:fixture:load FIXTURES=books
データ入りました(*^^)v
確認方法!
SQLite Download Page
↑
ここから「sqlite-tools-win32-x86-3220000.zip(1.62 MiB)」をダウンロードしてsqlite3.exeをC直下のRubyフォルダに配置してください。
(64bit版は提供がないらしいので、32bitのものを使用)
VS Codeのターミナルから下記を実行
rails dbconsole
select * from books
で先ほど入れたデータが表示されるはず! ※「.exit」でdbconsoleを終了できます。
コントローラーからモデルの内容を取得する
「\app\models\book.rb」にはほぼ何も書かれていませんが、親クラスの機能だけで既にDBにアクセスできる状態です。
(ただし、「\config\databace.yml」でDB接続情報を設定していること→デフォルトでsqlite3に接続できる設定になっている)
コントローラーに以下のコードを記述して「/views/xxx/list.html.erb」を作成
def bookList @books = Book.all end
「/views/xxx/list.html.erb」には下記を記述します。
<table border=2> <tr> <th>書名</th> <th>価格</th> </tr> <% @books.each do |book| %> <tr> <td><%= book.title %></td> <td><%= book.price %></td> </tr> <% end %> </table>
rails s でサーバーを起動して
「http:locahost:3000/xxx/bookList」にブラウザでアクセス!
DBに登録した内容がブラウザに表示されていれば成功です(*^^)v