LoginSignup
1
0

More than 3 years have passed since last update.

Railsのモデル機能について

Posted at

Rails1のモデルについて

Railsのモデルのメモです

Railsにおけるモデルとは、データベースや外部サービスとのやり取りをする機能のことです。

Railsでは、ORマッパーを使用するので、リレーショナルデータベースを、オブジェクトのように扱うことが出来ます。

データベースの接続の設定をするのに、configファイル配下にある、database.ymlというファイルを使用します。
データベースはsqlite3を使用しています。

database.yml
# 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]

モデル名の後に、テーブルにフィールドタイプを順次指定していきます。

スクリーンショット (35).png

続々とファイルができましたね。

これだけでは、肝心のデータベースの作成がまだされていません。
Railsでは、テーブルの作成や変更時に、マイグレーションという機能を使用します。

$ rails db:migrate

のコマンドで実行することが出来ます。

スクリーンショット (36).png

成功すれば、こんな結果になるはずです。

取得したデータの画面への表示

コードを記述する前に、こちらのmodelフォルダ配下のコードを確認しましょう。
私は、bookという名前でモデルをさくせいしました。

book.rb
class Book < ApplicationRecord
end

このBookにオブジェクト配列でデータが入っているようです。

Bookを画面に表示させるには、コントローラ機能と、ビュー機能を使用しましたね^^

--controller.rb
class HelloController < ApplicationController
  def list
    @books = Book.all
  end
end

作成したコントローラに上記のコードを追加します。
@books = Book.allで、配列の中のデータを@bookに格納し、ビュー機能でも使用できるようにします。

list.html.erb
<% @books.each do |book| %>
<tr>
    <td><%= book.title -%></td>
</tr>
<% end %>

では、@booksオブジェクトの中から、タイトルに関わるものだけ抜き出してみます。

次は、ルートの定義をします。

routes.rbに以下のコードを追加します。

get 'アプリ名/list'

そして、対象のURLへアクセスすると、、

スクリーンショット (37)_LI.jpg

ちゃんと出ていますね!!

コマプロを見てみると、、

スクリーンショット (38).png

BookからGETしている!!!

楽しくなってきます笑

ではまた!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0