kurodakazumichi / issues

0 stars 0 forks source link

【Ruby on Rails】railsで使えるコマンドについて #18

Open kurodakazumichi opened 6 years ago

kurodakazumichi commented 6 years ago

scaffoldコマンド

railsアプリケーションの直下で以下のコマンドを実行する

rails g scaffold Memo title:string body:text

もしくは

rails generate scaffold Memo title:string body:text

generateは省略してgと記載できる。

kurodakazumichi commented 6 years ago

すると以下大量のファイルが作成される

基本的なCRUDモデルに必要な処理、テスト、DB設定プログラムなどが自動生成される。

app/assets/javascripts

app/assets/stylesheets

app/controllers

app/helpers

app/models

app/views/memos

db/migrate

test

kurodakazumichi commented 6 years ago

db:migrateコマンド

railsアプリケーションの直下で以下のコマンドを実行する

rails db:migrate

このコマンドを実行すると rails_app/db/migrateにあるDBのテーブルを構築するプログラムが実行される。 環境構築の最初に実行する事でアプリケーションで必要なDBを構築できる。

DBをリセットする

rails db:migrate:reset

一度テーブルを破棄し、再構築するコマンド。 ただしvagrantの共有フォルダにDBファイルがある場合はエラーが発生する。 その場合は一度DBのファイルを削除して通常通りdb:migrateすればいい。

kurodakazumichi commented 6 years ago

rails g model

モデルファイルが自動生成される。

# rails g モデル名 フィールド名1:フィールドの型 フィールド名2:フィールドの型
rails g Hoge title:string body:text 

お約束

作られるファイル

他のモデルと関連するモデルを作るとき

rails g model Child body:string hoge:references

最後のhoge:references こうするとChildにはhoge_idというカラムが生成され、外部キーが設定される。

kurodakazumichi commented 6 years ago

rails c

rails consoleモードにするコマンド

rails console
#もしくは
rails c

この状態になるとrailsで動作するコードを実行できるようになる。

kurodakazumichi commented 6 years ago

rails db

rails db

sqlite3を使っている場合しか試していないが このコマンドを打つとDB操作モードになりSQL等が実行できる。

kurodakazumichi commented 6 years ago

rails db:seed

DBに初期値を登録するために使うコマンド。 予めデータを作成するための処理を作っておく必要がある。 データ作成処理はdb/seeds.rbに書く。

seeds.rb

5.times do |i|
  Post.create(title: "title #{i}", body: "body #{i}")
end

console

rails db:seed

とすればhogesに5件のレコードが登録される。

kurodakazumichi commented 6 years ago

rails g controller

コントローラーファイル、及び関連ファイルが作成される。

# rails g controller コントローラー名(複数形)
rails g controller Hoges

お約束

コントローラー名は単数形

作られるファイル、ディレクトリ

kurodakazumichi commented 6 years ago

rails routes

ルート(アクセス可能なURL)の一覧が表示される。

kurodakazumichi commented 6 years ago

rails g migration クラス名

DBに対する変更を行う場合はマイグレーションファイルを作成して行う。 クラス名は任意らしいが「行う処理+対象のテーブル名」とするのがよさげ。

例えばTechnologyというテーブルにdescriptionを追加するなら

rails g migration AddBirthdayTechnologies

とするとyyyymmdd_add_birthday_technologies.rbが出来上がる。

class AddBirthdayTechnologies < ActiveRecord::Migration[5.1]
  def change
  end
end

もっとマイグレーション

もっと規則に従ったコマンドにすれば、マイグレーションのコードも自動生成される。

rails g migration ClassName ColumnName:DataType ...

ClassNameは

AddColumnToTableName RemoveColumnFromTableName とか

rails g migration AddBirthdayToTechnologies birthday:date

とするとこんなものが出来上がる。

class AddBirthdayToTechnologies < ActiveRecord::Migration[5.1]
  def change
    add_column :technologies, :birthday, :date
  end
end