Rails1のモデルについて
Railsのモデルのメモです
Railsにおけるモデルとは、データベースや外部サービスとのやり取りをする機能のことです。
Railsでは、ORマッパーを使用するので、リレーショナルデータベースを、オブジェクトのように扱うことが出来ます。
データベースの接続の設定をするのに、configファイル配下にある、database.ymlというファイルを使用します。
データベースはsqlite3を使用しています。
# SQLite version 3.x
# gem install sqlite3
#
# Ensure the SQLite 3 gem is defined in your Gemfile
# gem 'sqlite3'
#
default: &default
adapter: sqlite3
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
timeout: 5000
development:
<<: *default
database: db/development.sqlite3
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
<<: *default
database: db/test.sqlite3
production:
<<: *default
database: db/production.sqlite3
ここでは、edvelpoment(開発)、test(テスト)、production(本番)環境が用意されていることがわかりますね。
モデルの作成
モデルは、以下のコマンドで作成することが出来ます。
$ rails g model モデル名 field:type[...] [options]
モデル名の後に、テーブルにフィールドタイプを順次指定していきます。
続々とファイルができましたね。
これだけでは、肝心のデータベースの作成がまだされていません。
Railsでは、テーブルの作成や変更時に、マイグレーションという機能を使用します。
$ rails db:migrate
のコマンドで実行することが出来ます。
成功すれば、こんな結果になるはずです。
取得したデータの画面への表示
コードを記述する前に、こちらのmodelフォルダ配下のコードを確認しましょう。
私は、bookという名前でモデルをさくせいしました。
class Book < ApplicationRecord
end
このBookにオブジェクト配列でデータが入っているようです。
Bookを画面に表示させるには、コントローラ機能と、ビュー機能を使用しましたね^^
class HelloController < ApplicationController
def list
@books = Book.all
end
end
作成したコントローラに上記のコードを追加します。
@books = Book.allで、配列の中のデータを@bookに格納し、ビュー機能でも使用できるようにします。
<% @books.each do |book| %>
<tr>
<td><%= book.title -%></td>
</tr>
<% end %>
では、@booksオブジェクトの中から、タイトルに関わるものだけ抜き出してみます。
次は、ルートの定義をします。
routes.rbに以下のコードを追加します。
get 'アプリ名/list'
そして、対象のURLへアクセスすると、、
ちゃんと出ていますね!!
コマプロを見てみると、、
BookからGETしている!!!
楽しくなってきます笑
ではまた!