新規プロジェクトの始め方 まとめ(rails)

新規プロジェクトを作成

-dオプションで使うデータベースの種類を指定する。

rails new new_project -d mysql

rails gで不要なファイル群を作成しないように設定変更

config/application.rbに以下を記述

module NewProject
  class Application < Rails::Application
    config.generators do |g|
      g.stylesheets false
      g.javascripts false
      g.helper false
      g.test_framework false
    end
  end
end

Model関係

データベースの作成

rails db:create
or
bundle exec rake db:create

モデルの作成

rails generate model モデル名

migrationファイルとモデルが作成される。
model名を単数形で指定しておけば自動的にテーブル名は複数形にされます。

create    db/migrate/20190820042025_create_irs.rb
create    app/models/ir.rb

migrationファイルの編集

class CreateIrs < ActiveRecord::Migration[5.2]
  def change
    create_table :irs do |t|
      t.string           :title
      t.references       :company, foreign_key: true
      t.timestamps
    end
  end
end

foreign_keyを使う場合には関連テーブルが先に存在する必要があるので、migrationファイルを作る順序に注意してください。

asociationの設定

1対多

has_many :irs
belongs_to :company

多対多

has_many :user_companies
has_many :users, through: :user_companies

Controller関連

controllerの作成

rails g controller コントローラー名

この際、特別な理由がなければコントローラー名は複数形で指定します。

create  app/controllers/irs_controller.rb
invoke  erb
create    app/views/irs
invoke  assets
invoke    coffee
invoke    scss

最初に出力されるファイルを変更しているので、ここではcontrollerとviewのみ生成されます。

Devise関連

細かいポイントはDeviseの使い方を参照。

Gemのインストール

 gem 'devise'
bundle install
rails g devise:install

ユーザーモデルの作成

rails g model hogehogeではなく、devise用のコマンドを利用する。

rails g devise user

model作成時と同様にmigrationファイルも作成される。

invoke  active_record
create    db/migrate/20190820051145_devise_create_users.rb
create    app/models/user.rb
insert    app/models/user.rb
  route  devise_for :users

必要に応じてmigrationファイルを編集します。
標準だとnameとか無いのでこんな感じで足します。

class DeviseCreateUsers < ActiveRecord::Migration[5.0]
  def change
    create_table :users do |t|
      ## Database authenticatable
      t.string :name,               null: false, unique: true, index: true
      t.string :email,              null: false, default: ""
      t.string :encrypted_password, null: false, default: ""
rails db:migrate

params.permitに追加

application_controller.rbに増やした項目を受け取るように設定します。
devise_parameter_sanitizerはdeviseのメソッドなのでbefore actionも条件を付けておきます。

class ApplicationController < ActionController::Base
  before_action :configure_permitted_parameters, if: :devise_controller?

  def configure_permitted_parameters
    devise_parameter_sanitizer.permit(:sign_up, keys: [:name])
  end
end

Routing

devise_for :users以外には特に記載がないのでコントローラに対応するルートを作っていきます。
rootも設定します。

Rails.application.routes.draw do
  devise_for :users
  root  'hogehoges#index'
  resources :users, only: :show
end

View関連

hamlを使う前提です。

haml-railsのインストール

gem "haml-rails", "~> 2.0"
bundle install

erbファイルをhamlへ変換

rails haml:erb2haml

Would you like to delete the original .erb files? (This is not recommended unless you are under version control.) (y/n)

こんなことを聞かれるのでerbが不用ならdeleteします。

deviseのview

viewファイルの生成

rails g devise:views

deviseのview参照先を変更

config/initializers/divise.rb
#config.scoped_views = false
↓
config.scoped_views = true

これで対応するviewファイルを変更すれば反映されます。

CSS関連

application.css削除
application.scss追加し@import "hogehoges";と記載
hogehoges.scssを_hogehoges.scssへリネーム
_reset.scssを作成し、リセットCSS内容をコピペ
application.scssに@import "reset";と記載

コメント