WeBlog

Webに関する情報を中心に発信してるブログ

ActiveRecordのinverse_ofについてメモ

inverse_ofとは inverse_ofを指定した関連づいている2つのモデルでは、お互いに同じインスタンス(オブジェクト)を参照できるようになる。 両方のモデルがメモリ上で同一のインスタンス(オブジェクト)として扱われる。 逆に、inverse_ofの設定が無いと別…

gem seed-fu を使って、ダミーデータを作成する

gem seed-fu を使うことでダミーデータを入れることができます。 railsにはデフォルトで rails db:seed というコマンドを使って、db/seeds.rbを実行することでダミーデータを入れることができます。 db/seeds.rbは何も考えずに使うと、rails db:seed という…

Slimの使い方

Slim とは? Slim は Rails3 以降 に対応した高速, 軽量なテンプレートエンジンです。 HTMLの< >や閉じタグなどを無くして、最低限必要なものだけを残したシンプルなテンプレート言語 軽量 といった特徴を持つ、Ruby製のテンプレートエンジンです。 つまり、…

FactoryBotでtraitを使って重複をなくす方法

今回はFactoryBotでtraitを使って重複をなくす方法について書いていきます。 traitを使わない場合 FactoryBot.define do factory :todo_task do title { 'Task' } status { :todo } # enumを使っている association :project end factory :doing_task do tit…

Railsの環境構築での疑問

今回はスクールの課題でforkした後に環境構築で疑問に思うことがあったので、その内容を書いていきます。 1、リモートリポジトリをforkする 今回は既存のリモートリポジトリをforkして課題を進める感じだったので、ますはforkしました。 2、リモートリポジ…

FactryBotに associationを定義する方法とメリット

今回はFactryBotに associationを定義する方法やそのメリットについて書きます。 今回のコード # app/models/project.rb class Project < ApplicationRecord end # app/models/task.rb class Task < ApplicationRecord belongs_to :project validates :title…

【Rspec】xit、xcontext、xdescribeについて

xit、xcontext、xdescribeとは? SystemTestの中でテストを飛ばしてあげたい時があります。 そんな時に使えるのがxです。 xit、xcontext、xdescribeを使うと、テストを無視することができます。 使い方 describe 'Task一覧' do context '正常系' do xit '一…

RSpecでApplicationHelperのモジュールメソッドを使う方法

テストの中でapp/helpers/application_helper.rbで定義したメソッドを使いたい時があります。 そんな時に対応を書きます。 複数のテストファイルでモジュールメソッドを使いたい # spec/rails_helper.rb RSpec.configure do |config| config.include Applica…

SystemTestでtarget:'_blank'に対応する方法

target="_blank"とは? <a target="_blank" rel="noopener" href="/projects/1/tasks">View Todos</a> HTMLのリンクなどで上記のようにtarget="_blank"属性が付与されたリンクがあります。 target="_blank"属性が付与されたリンクはクリックすると別タブで開きます。 しかし、SystemTestの中でtarget="_blank"属性が付与され…

git commit でThere are too many unreachable loose objects; run 'git prune' to remove them.エラーが出た

Git

エラー内容 gcって何? 対処方法 エラー内容 % git commit -m 'コミットメッセージ' Auto packing the repository in background for optimum performance. See "git help gc" for manual housekeeping. warning: The last gc run reported the following. Pl…

RSpecの基本的な構文

RSpecの基本的な構文 letはどんな時に使うのか? let!はどんなときに使うのか? beforeはどんな時に使うのか? RSpecの基本的な構文 require 'rails_helper' RSpec.describe 'UserSessions', type: :system do # FactoryBotを使っています let(:user) { crea…

SystemSpecの環境構築

gemのインストール Rspecの設定をする Specファイルの自動生成設定 Rspecの実行結果を見やすくする FactoryBotの設定 capybaraの設定 spec/support 配下のファイルを読み込むように設定する 実行するテストケースを限定する ログイン処理をモジュールを作成…

モデルスペックを作成する

Rspecのモデルスペックを作成 # models/task.rb class Task < ApplicationRecord belongs_to :user validates :title, presence: true, uniqueness: true validates :status, presence: true enum status: { todo: 0, doing: 1, done: 2 } end 今回は既にモ…

bundle install Could not find 'bundler' (2.0.2) エラー の対応方法

bundle install Could not find 'bundler' (2.0.2) 今回bundle installすると上記のようなエラーが出たので、その対応手順を記載します。 エラー内容 今回GiHub上で他人のリモートリポジトリをforkして、それをローカルにcloneして、環境構築を行いました。 …

Rspecの環境構築

Rspecとは? Rspecはテスト用のフレームワークです。 RailsにはMiniTestと言うテスト用のフレームワークがデフォルトで付いてきます。 MiniTestを使ってもいいですが、Rspecというテスト用のフレームワークがRailsでよく使われるので、こいつを使っていきま…

【 Git 】リポジトリをforkして、ローカルに開発環境を作る

Git

forkとは 他人のリポジトリを自分のアカウントのリモートリポジトリにコピーすることです。 https://qiita.com/matsubox/items/09904e4c51e6bc267990 他人のリポジトリをforkして、ローカルに開発環境を作る 1、自分のGitHubアカウントにログインします。 …

data: { disable_with: 〇〇}について

disable_withって何? HTMLにdisable_withという属性が付与されているけど、これなんだろうと思ったので調べてみました。 これは、二重送信をさせないようにするためについているみたい。 なので、フォームから何かを送信するときに、連続でボタンを押せない…

gem enum_helpについて

enumとは? enumとは、列挙型とも呼ばれ、一連の整数値に対して複数の変数名をつけれる仕組みを指します。 要は整数と名前を紐づけることができるということです。 enumを使う準備をする カラムを用意する enumを使うにはテーブルにカラムを準備します。 cla…

Railsでセレクトボックスを作成する

セレクトボックスとは? セレクトボックスは上記の画像のように選択するための一覧みたいなものです。 これをRailsでどのように作成するのかを書いてみます。 セレクトボックスを作成するHTMLを確認 ますは、セレクトボックスを作るためにどんなHTMLが必要な…

メニューのid属性やclass属性を付け外しする

メニューのアクティブ・非アクティブとは? メニューのアクティブ・非アクティブ判定とは、上記の画像のように選択しているリンクに「active」などのclass属性やid属性を付与して、そこに色をつけたりして強調する物です。 可変長引数を使った実装 # applica…

Ransackで日付検索を実装する

今回やりたいのはransackというgemを使って日付検索を実現したいと思います。 ransackを使う準備や使い方に関しては下記記事で記載しています。 https://weblog-tec.hatenablog.com/entry/2021/05/03/095143 ransackのPredicateとは? ransackには便利なPred…

レイアウトファイルのレンダリングを切り替える

レイアウトファイルとは? レイアウトファイルは全てのビューファイルで大元にあたるファイルのことです。 # app/views/layouts/application.html.erb <html> <head> <title><%= page_title(yield(:title)) %></title> <%= csrf_meta_tags %> <%= csp_meta_tag %> <%= stylesheet_link_</head></html>…

enumについて

enumとは? enumとは、列挙型とも呼ばれ、一連の整数値に対して複数の変数名をつけれる仕組みを指します。 要は整数と名前を紐づけることができるということです。 enumを使う準備をする カラムを用意する enumを使うにはテーブルにカラムを準備します。 cla…

名前空間のルーティング、コントローラー、ビューを作成する方法

名前空間とは? 名前空間は、クラスをフォルダの構造のように、階層的に分類することが出来る仕組みのことになります。 同じフォルダの中だと、同じ名前のファイルは作れません。 でも、フォルダを別にしてしまえば、同じ名前のファイルを作ることが出来ます…

AdminLTEで管理画面を実装する

AdminLTE3とは? AdminLTEは、Bootstrap4.6フレームワークとJS / jQueryプラグインに基づいて作成された、管理画面の作成に利用されるCSSフレームワークです。 yarnを使ってAdminLTE3をインストール rubyのライブラリ管理を行うGemやMacOSに導入するライブラ…

すでにindex貼られているカラムに対してunique制限をかける方法

内容 すでにindexが付与されているカラムに対してユニーク制約を付与したいと思います。 今回はreset_password_tokenカラムに対してユニーク制約を付与します。 現状 現状だと上記の画像のようにreset_password_tokenカラムのユニーク制約はfalseになってい…

gem sorcery でできること

User Activation ユーザーが新規登録したらメールが来て、そのメールに書いてあるリンクをクリックすると、ユーザー認証が完了するという機能を追加する。 https://github.com/Sorcery/sorcery/wiki/User-Activation Reset Password パスワード忘れてログイ…

Action Mailerについて

Action Mailerとは? Railsに備え付けられている、メールの送受信を行うことができる機能。 メイラーはActionMailer::Baseを継承し、app/mailers配下に〇〇_mailer.rbファイルが配置されます。 app/views/メーラー名配下にメールを送信するテンプレートのビ…

sorceryのreset_passwordモジュールを使ったパスワードリマインダー機能の処理フロー

Reset Passwordモジュールでは、token発行機能や、tokenによるユーザー認証機能など、パスワードリセットに必要な機能をまとめて提供してくれています。 createアクションが実行された時 パスワードリセット対象のメールアドレスを申請して、リセットの対象…

sorceryのreset_passwordモジュールを使ったパスワードリマインダー機能の実装

sorceryのreset_passwordモジュールを使ったパスワードリマインダー機能の実装手順のメモです。 sorceryのwiki https://github.com/Sorcery/sorcery/wiki/Reset-password rails guide https://railsguides.jp/action_mailer_basics.html 1、sorceryのreset_p…