新規プロジェクトを作成
-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";と記載
コメント