edo1z blog

プログラミングなどに関するブログです

Railsの使い方(1)

チュートリアルやりながら、使い方まとめます。

railsコマンド

便利なコマンドが沢山ある。rails5になって変わったのも結構あるらしい。API用の軽量なやつをさくっと作れるとかもよさそう。

下記のように省略できる。

$ rails generate -> rails g
$ rails server -> rails s
$ rails console -> rails c
$ rails test -> rails t
$ bundle install -> bundle

元に戻す

rails destroyで大体何でも戻る

$ rails destroy model User
$ rails destroy controller StaticPage

マイグレーションは、rollback

$ rails db:rollback
$ rails db:migrate VERSION=0 #最初の状態に戻る

プロジェクトの作成

$ rails new hoge

Gemfileの編集

欲しいgem書く。groupをつくって環境を分ける。下記でインストールする。

$ bundle install

インストール対象外にしたいグループがある場合、下記のようにする。

$ bundle install --without production

Scaffold作成

rails generate scaffoldで作成できる。モデル名のあとにフィールドを書く。

$ rails generate scaffold User name:string email:string

マイグレーション

$ rails db:migrate

ルーティング

config/routes.rbを編集する。 resources :テーブル名、とするだけで一通りの規定のアクションにアクセスできるようになる。 root 'controller#action'、とすればルート画面の設定できる。

Rails.application.routes.draw do
  resources :users
  root 'application#hello'
end

Model

下記のような感じで、テーブル同士の関係を書くことで勝手に紐づく。 models/user.rb

class User < ApplicationRecord
  has_many :microposts
end

バリデーションは下記のような感じ。メッセージはどこに書くのかな。 model/micropost.rb

class Micropost < ApplicationRecord
  belongs_to :user
  validates :content, length: { maximum: 140 }
end

コントローラ

rails generate controllerで作れる。コントローラ名のあとアクションを書ける。

$ rails generate controller StaticPage home help

テスト

コントローラのテストはこんな感じで書く。

require 'test_helper'

class StaticPageControllerTest < ActionDispatch::IntegrationTest
  test "should get home" do
    get static_page_home_url
    assert_response :success
  end

  test "should get help" do
    get static_page_help_url
    assert_response :success
  end

end

テスト実行

$ rails t