目次
準備
create application
% rails new . --css=tailwind --css=sass --javascript=esbuild --database=postgresql
% bin/bundle add tailwindcss-rails
% bin/rails tailwindcss:install
gem 'devise', '~> 4.9', '>= 4.9.2'
% bundle install
% bin/setup
user
% bin/rails generate devise:install
% bin/rails generate devise User Confirmableをコメントアウトする % bin/rails db:migrate
# app/models/user.rb :confirmable追記
Viewの追加
rails generate devise:views users
home
ホームを作る
% rails generate controller Pages home
homeコントローラーはパブリックなので、認証をはずす
# ユーザーがコンテンツにアクセスするには認証が必要で、共通のワークスペースに属するコンテンツのみが表示される必要がある # ユーザーは、認証されていない場合でも、ホームページからサインイン フォームに移動できる必要がある # アプリケーション全体のどこでもユーザーが認証されていることを確認する必要がある。 # ApplicationControllerDevise authenticate_user!メソッドで、これを強制できる # app/controllers/application_controller.rb before_action :authenticate_user!, unless: :devise_controller? # コールバックに例外を追加 # app/controllers/pages_controller.rb skip_before_action :authenticate_user!
ルートパス
# config/routes.rb root to: "pages#home"
view更新
# config/initializers/devise.rb config.scoped_views = true
ログイン後のパス
# app/controllers/application_controller.rb def after_sign_in_path_for(resource) notes_path end
Flash メッセージ
DOM からメッセージを削除する
bin/rails generate stimulus removals
HelloController削除
bin/rails destroy stimulus hello 削除 import HelloController from "./hello_controller.js" application.register("hello", HelloController)
// app/javascript/controllers/removals_controller.js import { Controller } from "@hotwired/stimulus" export default class extends Controller { remove() { this.element.remove() } }
見出しタイトル
% rails generate scaffold NameList name:string kana:string head:boolean line:integer buddhist_name:string alive:boolean birth:string death:string g_age:string memo:text generation:string
validates :name, presence: true
t.string :name, null: false
% bin/rails db:drop db:create db:migrate
% bin/rails test:system
% bin/dev
テストデータ
テストデータと開発データの同期
# db/seeds.rb puts "\n== Seeding the database with fixtures ==" system("bin/rails db:fixtures:load")
bin/rails db:seed
note
% rails generate scaffold Note name:string kind:integer line:integer
user
gem 'devise', '~> 4.9', '>= 4.9.2
% bundle install % bin/rails generate devise:install
bin/rails generate devise User Confirmableをコメントアウトする bin/rails db:migrate
view更新
# config/initializers/devise.rb config.scoped_views = true
ログイン後のパス
# app/controllers/application_controller.rb def after_sign_in_path_for(resource) notes_path end
company
% rails generate model Company name
関連付け
% bin/rails generate migration add_company_reference_to_notes company:references % bin/rails generate migration add_company_reference_to_users company:references % bin/rails generate migration add_note_reference_to_name_list note:references
bin/rails db:drop db:create db:migrate
% rails generate controller Companies new create