学習記録

アウトプット用に作りました

gretelを使ってパンくずリストを実装

パンくずリストとは ユーザーがサイトを使用する際、自分が今サイトのどの位置にいるのかというのを瞬時にわかるようにするための表示のことを「パンくずリスト」と言います。「パンくず」と省略して使われています。 Railsアプリケーションにおいてパンくず…

seed_fuを使って初期データを作成

seed_fuとは すでに存在しているデータの中の変更したいレコードだけを更新することができたり、ファイル単位でデータを作成することができます。 データを作成するrailsの仕組みとしてseeds.rbファイルに記入する方法がありますが、この方法だとデータの変…

応用編課題7で参照したサイト

has_one_attachedについて Active Storage の概要 - Railsガイド 横幅のカラムに対してのバリデーションについて 3. バリデーション(3) | TECHSCORE(テックスコア) [Rails][validation]integerに対する最小値や最大値などの設定 - Qiita 画像の位置を変更す…

別タブで開いた画面のテスト / ApplicationHelperのメソッドをRSpecでも使用

別タブで開いた画面をテストする方法 下記のコードのようにUserの一覧ページからUserの詳細ページに移るときにtarget: :_blankを使って別タブで表示するような実装をしている部分のテストを書いていきます。 <%= link_to "詳細", users_path(@user), target:…

System Spec

システムスペックとは 複数のモデル、コントローラを統合したプログラム全体の挙動をチェックする統合テストです。またJavaScriptを利用する画面のテストを書くこともできます。 システムスペックには下記の機能がデフォルトで準備されています。 selnium-we…

応用編課題6で参照にしたサイト

punditのReadMe GitHub - varvet/pundit: Minimal authorization through OO design and pure Ruby classes punditについて punditを使ってみる - maru877’s blog Pundit + Railsで認可の仕組みをシンプルに作る - Qiita Authorization of Pundit - Qiita 40…

Model Spec

モデルスペックに含めるテスト 有効な属性で初期化された場合は、モデルの状態が有効になっていること。正常系のテスト。 バリデーションを失敗させるデータであれば、モデルの状態が無効になっていること。異常系のテスト。 クラスメソッドとインスタンスメ…

FactoryBotについて

FactoryBotとは テストデータ生成のためのデータライブラリのことです。 ここで作成したデータはテストケースで呼び出すことができます。 FactoryBotの使い方 GemFileにFactoryBotを追加します。 開発環境とテスト環境のみで使うものなので、下記のように指…

応用編課題5で参照にしたサイト

ActiveModelについて Active Model の基礎 - Railsガイド form_objectについて form objectを使ってみよう - メドピア開発者ブログ ActiveModel::Attributesの使い方 [Rails] ActiveModel::Attributesの使い方(配列化やネストしたhashの取り扱いなども) - Qi…

応用編課題4で参照にしたサイト

enumについて Rails enumについてまとめておく - Qiita 【Rails】enumチュートリアル | Pikawaka - ピカ1わかりやすいプログラミング用語サイト 時間選択の部分、一時間おきに選択できるようにする。 Rails で datetimepicker を使用する手順 - blog @arfyas…

応用編課題2で参照にしたサイト

パンくずリストのgretelの使い方について GitHub - kzkn/gretel: Flexible Ruby on Rails breadcrumbs plugin. 【Rails】gretelを使ってパンくずリストを作成しよう | Pikawaka - ピカ1わかりやすいプログラミング用語サイト

応用編課題1で参照したサイト

application_controller.rbに記載のあったprotect_from_forgery: :exceptionについて protect_from_forgery with: :exceptionについて調べたまとめ - Qiita bundle exec rails db:seed_fu とは railsで初期データを入れる(seed-fuの使い方) - Qiita uuidにつ…

RSpec 課題4で参照したサイト

タブの移動 Selenium + Capybaraで target="_blank" をテストする - Qiita Capybaraと仲良くなる(タブ・ウィンドウの操作について) - Qiita traitについて FactoryBotのtraitでリレーション先のModelのtraitを使って設定することができる - コード日進月歩…

RSpec 課題3で参照にしたサイト

読み込むgemについて。 サポートが終了したchromedriver-helperからwebdrivers gemに移行する手順 - Qiita 読み込むgemとcapybaraについて。 【Rails】『RSpec + FactoryBot + Capybara + Webdrivers』の導入&初期設定からテストの書き方まで | vdeep ログ…

RSpec 課題2で参照したサイト

FactoryBotのテストデータ使うときに使用。 factoryBotの{ }はどういう挙動になるのか - その辺にいるWebエンジニアの備忘録 --format documentationの知識。 RSpecには表示の出力をキレイにする --format documentation というオプションがある - コード日…

メニュータブのアクティブ・非アクティブを設定する

アクティブ・非アクティブとは、今自分がいるページのメニュー名をアクティブにします。 例えばTwitterのサイドメニューでも使われている機能です。 画像では「通知」のページを開いているので、「通知」がアクティブになっています。 実装方法 Railsでアク…

ransackを使ってプルダウンのセレクトボックスを作る

以前ransackを使った基本の検索機能の作り方をまとめていました。 ransackを使って検索機能を実装する - 学習記録 またransackを使った日付検索の機能の実装についてもまとめてあります。 ransackを使った日付検索 - 学習記録 今回は下記のようなプルダウン…

ransackを使った日付検索

以前更新したransackに関してのブログ。 ransackを使って検索機能を実装する - 学習記録 predicateの種類 predicateとは「述語」という意味です。 (カラム名を)どのように検索するのかを指定するときに使えます。 ransackでは下記の方法を使って検索の範囲等…

enumをi18n対応させるenum_helpを導入する

enumとは 数字を値と紐付けているようなデータの管理をしたいときに使います。 例えば管理者権限の有無を管理する場合などに使うことができます。 (user.rb) enum role: { general: 0, admin: 1 } このように、数字で管理をしているだけだと、わかりづらいで…

ページタイトルの出力

記事タイトルとは、このような各ページの名前のことです。 ここでは、「ブログの記事名 - ブログ名」 という形で出力されています。 この表記がどのように書かれて出力されているのかを説明していきます。 まず各ページに同じタイトルを表示させるには、 app…

configを導入して環境ごとに定数を管理する

configとは定数管理のGemです。 定数を管理する箇所が1箇所にまとまるのでメンテナンスが楽になります。 使用方法 gemfileに追加後、インストールします。 使用するファイルが生成します。 rails g config:install ※gitignoreに自動で下記の内容が追加されま…

letter_opener_webを導入

開発環境で毎度メールが送られてしまうと面倒なので、 開発環境でのみletter_openerを導入します。 開発中にrailsから送信したメールを確認することができます。 使用方法 Gemfileにletter_opener_webを追加してインストールします。 ここで注意しなくてはい…

ActionMailerを使用

ActionMailerとは railsにデフォルトで備わっているメール送信機能です。 app/mailers配下にメール送信用のメソッドが作成され、 app/views/メーラー名配下にメールの文言ファイルが作成されます。 通常のテキストメール送信に加え、HTMLメールが送信できた…

Sorceryで用意されているサブモジュール

ユーザー認証用に導入したgemのsorceryには、 単純なパスワードによる認証機能に加えて様々なモジュールが用意されています。 使いたい機能をサブモジュールとしてインストールしていき、 それを元に自分たちで処理を書いていくという方式を取っています。 U…

ransackを使って検索機能を実装する

ransackとは Railsで検索機能を実装する場合に使用するgemです。 使い方 gemfileにgem 'ransack'を導入して、bundle installします。 gemを新たに追加した時は、サーバーを再起動させる必要があります。 まずコントローラを作成していきます。 def index @q …

kaminariを使ってページネーションを実装

ページネーションとは 1つのページに掲載するコンテンツが多くなってしまった時、 複数ページに分けて表示させるようにしたものです。 下記のような1,2,3,4,.....のようなものです。 railsではkaminariを使って、ページネーションを実装することができます。…

jQueryで要素を追加するメソッド

append 親要素(div)の中の、子要素の最後に指定要素やテキストを追加します。 HTML <div class="sample"> <h1>あいさつ</h1> <p>こんにちは</p> <p>こんばんは</p> </div> jQuery $('div').append('<p class="add">子要素pの後ろに追加</p>'); 結果 <div class="sample"> <h1>あいさつ</h1> <p>こんにちは</p> <p>こんばんは</p> <p class="add">子要素pの後ろに追加</p> </div> prepend 親要素(div)の中…

Ajaxを実装する

Ajaxとは Webブラウザ上で非同期通信を行い、ページの再読み込みなしに ページを更新するためのJavaScriptのプログラミング手法です。 Ajaxを使うことで、スムーズな操作を行うことができます。 いいね機能を実装するときを例に説明します。 Ajaxを使わない…

アクションを追加する

railsにおける基本的なアクションは、 index new create update show edit destroyの7つあります。 それ以外のアクションを追加する必要があるときは、 memberとcollecrionを使うことで追加することができます。 member コレクションの各メンバーに対してア…

N+1問題

N+1問題とは SQLが必要以上に実行されてしまうとパフォーマンスが落ちるという問題です。 日常生活で例えるなら、お会計の時に品物をまとめて買うのではなく、 一つずつお金を払って、買っているような効率の悪いイメージです。 N+1問題の例 UserモデルとTwe…