
Ruby on Rails 5アプリケーションプログラミング
- 作者: 山田祥寛
- 出版社/メーカー: 技術評論社
- 発売日: 2017/04/14
- メディア: 大型本
- この商品を含むブログを見る
序文
「Ruby on Rails 5 アプリケーションプログラミング」学習3日目。
珍しく午後から外出するのでさらっと。
GitHub
客観的成果
- 第2章
- 2.4 モデルの基本
(学習時間:2時間)
コード実装部分
↓/config/database.yml
# SQLite version 3.x # gem install sqlite3 # # Ensure the SQLite 3 gem is defined in your Gemfile # gem 'sqlite3' # # エイリアス(&{エイリアス名})の指定 # defaultというクラス、あるいは変数を作ってる感じ default: &default # 接続するデータベースの種類 adapter: sqlite3 # 確保する接続プール # (データベースへの接続をあらかじめ準備しておき、 # また利用の都度、切断せずに再利用する仕組み) pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> # 接続のタイムアウト時間 timeout: 5000 # 開発環境の設定 development: # 上で設定したエイリアスを挿入する # <<: *{エイリアス名} <<: *default # データベース名(データベースファイル名) database: db/development.sqlite3 # ↓と指定するのと同等 # adapter: sqlite3 # pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> # timeout: 5000 # 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
↓/test/fixtures/cds.yml
# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html # フィクスチャによるテストデータの準備 # (テストデータをデータベースに流し込むための仕組み) # rails db:fixtures:load FIXTURES=cds # みたいなコマンドでテーブルにテストデータが展開される # 指定したフィールド以外に # id(主キー),created_at(作成日時), # updated_at(更新日時)フィールドが自動生成される one: jan: 4526180405252 title: 星眠る島 price: 1600 artist: 宇宙団 released: 2017-01-11 is_major: false # 省略 six: jan: 4988002756452 title: 充分未来 price: 2000 artist: 集団行動 released: 2018-02-07 is_major: true
↓/app/controllers/yahoo_controller.rb
class YahooController < ApplicationController # 省略 def list # Cdオブジェクトのallメソッド呼び出し # Rubyでは引数なしの関数呼び出しを示す()は不要 # (あってもいい) # 返り値はCdオブジェクトの配列 @cds = Cd.all # 発行されるSQL # SELECT "cds".* FROM "cds" # Rubyで外部からアクセスできるのは # 基本的にメソッドだけ? # インスタンス変数とかは多分 # ゲッターメソッドで呼び出す。多分 end end
↓app/views/yahoo/list.html.erb
<table> <tr> <th>JANコード</th> <th>タイトル</th> <th>価格</th> <th>アーティスト</th> <th>リリース日</th> <th>メジャーレーベル?</th> </tr> <%# Ruby構文をそのまま埋め込める %> <% @cds.each do |cd| %> <tr> <td><%= cd.jan %></td> <td><%= cd.title %></td> <td><%= cd.price %></td> <td><%= cd.artist %></td> <td><%= cd.released %></td> <td><%= cd.is_major %></td> </tr> <% end %> </table>
↓/config/routes.rb
# ルーティング設定を指定する Rails.application.routes.draw do # 省略 get 'yahoo/list' end
実行結果
↓localhost:3000/yahoo/list
感想
今日は意外と知らなかったことが出てきた。
テストデータの流し込み方とか、YAMLの構造とか。
Qiitaとかに載ってる情報って、最短で目的を達成するための情報ばっかりなので、根本的なところから丁寧に説明してもらえるのはありがたい。
某予備校も見習ってほしいものである。
ま某予備校も最初は持ち上げていたんだけど。
なんとなくで使ってるRubyも少しずつ覚えていこう。
カロリーメイトください。
BGM
Good So Good / □□□ www.youtube.com