差分

Tep8

3,719 バイト追加, 2023年7月5日 (水) 11:29
準備
[[category:memo|{{PAGENAME}}]]
== 準備 ==
[[Rails前バージョン確認|バージョン確認]]
 
== create application ==
% rails new . --css=tailwind --css=sass --javascript=esbuild --database=postgresql
<s>% bin/bundle add tailwindcss-rails</s>
<s>% bin/rails tailwindcss:install</s>
gem 'devise', '~> 4.9', '>= 4.9.2'
% bin/setup
== テスト用のデータで開発用のデータをつくる設定 ==
<nowiki># db/seeds.rb
 
puts "\n== Seeding the database with fixtures =="
system("bin/rails db:fixtures:load")</nowiki>
 
== user ==
% bin/rails generate devise:install
 
<nowiki>% bin/rails generate devise User
 
Confirmableをコメントアウトを外す
 
% bin/rails db:migrate</nowiki>
 
# app/models/user.rb
:confirmable追記
 
Viewの追加
rails generate devise:views users
 
view更新
# config/initializers/devise.rb
config.scoped_views = true
 
== Devise ==
config.mailer_sender = 'info@pokpok.jp'
 
メールプレビュー(リンクがエラーになる)
<nowiki># test/mailers/previews/devise_preview.rb
 
class DevisePreview < ActionMailer::Preview
def confirmation_instructions
Devise::Mailer.confirmation_instructions(User.new, Devise.friendly_token[0,20])
end
end
 
http://localhost:3000/rails/mailers/devise/confirmation_instructions</nowiki>
 
== home ==
ホームを作る
% rails generate controller Pages home
 
homeコントローラーはパブリックなので、認証をはずす
 
<nowiki># ユーザーがコンテンツにアクセスするには認証が必要で、共通のワークスペースに属するコンテンツのみが表示される必要がある
# ユーザーは、認証されていない場合でも、ホームページからサインイン フォームに移動できる必要がある
# アプリケーション全体のどこでもユーザーが認証されていることを確認する必要がある。
# 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!</nowiki>
 
ルートパス
<nowiki># config/routes.rb
 
root to: "pages#home"</nowiki>
 
view更新
# config/initializers/devise.rb
config.scoped_views = true
 
ログイン後のパス
<nowiki># app/controllers/application_controller.rb
def after_sign_in_path_for(resource)
notes_path
end</nowiki>
 
== Flash メッセージ ==
DOM からメッセージを削除する
bin/rails generate stimulus removals
 
<nowiki>// app/javascript/controllers/removals_controller.js
 
import { Controller } from "@hotwired/stimulus"
 
export default class extends Controller {
remove() {
this.element.remove()
}
}</nowiki>
 
おまけ HelloController削除
<nowiki>bin/rails destroy stimulus hello
 
削除
import HelloController from "./hello_controller.js"
application.register("hello", HelloController)</nowiki>
 
== container ==
rails generate scaffold Container name:string
 
関連付け
% bin/rails generate migration add_container_reference_to_users container:references
% bin/rails generate migration add_note_reference_to_name_list note:references
 
nullを許可する
add_reference :users, :container, foreign_key: true
belongs_to :container, optional: true
 
bin/rails db:drop db:create db:migrate
 
% rails generate controller Companies new create
 
取り消し
% rails destroy scaffold Company name:string
 
=== 一意制約を追加 ===
rails generate migration add_unique_constraint_to_containers
 
== note ==
 
% rails generate scaffold Note name:string kind:integer line:integer
 
関連付け
% bin/rails generate migration add_container_reference_to_notes container:references
 
== client ==
% rails generate scaffold Client note:references name:string kana:string email:string line:integer
 
== ラベル ==
=== client label ===
rails generate scaffold ClientLabel note:references name:string kind:integer
 
中間テーブル
rails generate migration CreateJoinTableClientClientLabel client client_label
 
== other ==
% rails generate scaffold Other client:references name:string kana:string client_name:boolean line:integer memo:text generation:string
 
== db:rollback ==
% rails db:migrate:status
 
% rails db:rollback
 
% rails db:rollback STEP=n
 
% rails db:migrate:down VERSION=**************
 
== ========== ==
% 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
bin/rails db:seed
 
== note ==
% rails generate scaffold Note name:string kind:integer line:integer
== user ==
bin/rails generate devise User
Confirmableをコメントアウトする
bin/rails db:migrate
notes_path
end</nowiki>
 
== 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