assign_attributesメソッドとupdate_attributesメソッド

[assign_attributes]メソッドと[update_attributes]メソッドについて [assign_attributes]メソッドは、インスタンスの値を変更するがDBには保存しないカラム 下の検証で動きがイメージできると思います 34: def update 35: authorize(@article) 36: binding.…

find_eachメソッド

find_eachメソッド 勉強をしていく中で、下記のようなコードで戸惑ってしまった事があったので、こちらに備忘録として記載します。 User.find_each(&:id) [find_each]メソッドとは? 大量のレコードをループ処理する際にメモリの消費量を抑える為に、デフォ…

モデルに記載するscopeとは?

モデルに記載するscope モデルに記載するscopeと、モデルにメソッドを記載する場合の違いが曖昧だった為、こちらに備忘録として記載します 下記は、モデルにscopeを記載した場合 [app/models ファイル] scope :title_rails, -> { where(title: "rails") } # …

Linuxのディレクトリ構造

Linuxのディレクトリ構造 Linuxのディレクトリ構造について理解していなく、詰まってしまったのでこちらでまとめさせていただきます 参考記事の動画が分かりやすかったので、動画の内容を自分の備忘録として、そのまま記載します。 各ディレクトリとその機能…

PATHを通すとは?

PATHを通すとは? PATHを通すことの理解が曖昧だったので、こちらでまとめさせていただきました 現在、下記のようにHOMEディレクトリ(/Users/higmonta)の下に[path_test]というディレクトリを作成し、[path_test]ディレクトリの下に[abcd]というファイルを作…

vimの使い方

vimの使い方 vimの使い方をまとめます。 まずvimには、3つのモードがあります。 [ノーマルモード]、[インサートモード]、[コマンドラインモード]の3つです。 vimの使い方に慣れていない時に、使いづらかったり、今どのような状態になっているかが分からなく…

ディレクトリとパス

ディレクトリとパスについて ディレクトリとパスについて認識が曖昧だった為、こちらでまとめさせていただきます 主なディレクトリとパスの種類は、以下になります [ディレクトリ] ・ルートディレクトリ ・HOMEデレクトリ ・カレントディレクトリ [パス] ・…

カーネルとシェルと環境変数とシェル変数

[カーネルとシェルと環境変数とシェル変数について] PCの起動時の流れや、環境変数についての理解が曖昧だったため、こちらでまとめさせていただきます PCにログインするとログインした人のシェルができます(ログインした人のシェルプログラムが動くイメージ…

Rakeタスクとcronの設定

Rakeタスクとcronの設定 [Rakeについて] Rakeは、rubyで特定の処理を定義できるツールです。 Rakeが実行する処理内容を「Rakeタスク」と呼び、「Rakefile」に記述します。 [cronについて] cron(クーロン)と呼ばれる仕組みは、UNIX系のOSに標準で備わっている…

空文字への代入

空文字への代入 下記のようなコードがある場合、空文字('')へ代入する際の注意点 [app/models ファイル] def build_body(controller) result = '' article_blocks.each do |article_block| result << if article_block.sentence? sentence = article_block.b…

STI 単一テーブル継承

STI 単一テーブル継承 [Tag]モデルと[Author]モデルは、同じカラム名が必要になるので、[Taxonomy]テーブルに[Tags]テーブルと[Author]テーブルの値を保存に[Taxonomy]テーブルのtypeカラムに何のモデルのデータかを保存する class Taxonomy < ApplicationRe…

パンくずリスト

パンくずリスト パンくずリストは、以下のようなもの パンくずリストを作成するメリット ・ユーザーが今どのページにいるのか分かるようにするため ・クローラーの巡回を手助けする事でSEO対策になる ※ クローラー: インターネット上に存在するWEBサイトや画…

rails コマンドが使えない時の対処法

rails コマンドが使えない時の対処法 下記のようにrailsコマンドが使えない時は、[rails]Gemがインストールされていない可能性がある。 rbenvなどでRubyのバージョンを新しくした場合などに発生することがある 通常は、下記のように[bundle]と[rails]が存在…

リンク時にタブを変えるHTML記載方法

リンクをクリックした時にタブを変えるHTML記載方法 下記のように、[target:'_blank']をオプションで記述する <%= link_to 'View Todos', project_tasks_path(@project), target:'_blank', rel: 'noopener' %> ※ポイント ・RSpecテスト実行時の注意点 下記の…

byebug Gem

[byebug]Gemの導入と使い方 Gemfileに以下のように記述する(railsをインストールしている場合は、デフォルトでインストールされている) gem 'byebug' ↓ $ bundle install ↓ 下記のようにデバッグしたいところに[byebug]を記述する [spec/system/task_spec.rb…

RSpecのシステムテスト

RSpecのシステムテストの手順と記述 Gemfileに以下のように記載する [Gemfile] group :test do gem "capybara" gem 'webdrivers' end ※ ・[capybara]Gem: ブラウザ上でのリンクのクリック、フォームの入力等のUI操作コマンドで実行できるようにするもの。 ・…

<!DOCTYPE html>について

について のDOCTYPE宣言についてハマったことがあり、その重要性を知ったので、こちらにまとめます。 今回ハマったことは、以下になります。 [app/views/layouts ファイル] <html> <head> <meta charset="utf-8"> <meta lang='ja'> <meta name="viewport" content="width=device-width, initial-scale=1"> <title><%= page_full_title(yield(:title), admin: tr…</meta></meta></meta></head></html>

RSpecを使ったバリデーションテスト

RSpecを使ったバリデーションテスト 下記のようなスキーマ構造とバリデーションが設定されているRSpecを用いたモデルのバリデーションテスト [app/models/task.rb] class Task < ApplicationRecord belongs_to :user validates :title, presence: true, uniq…

RSpecのセットアップ

RSpecの使い方 RSpecの導入は、以下になります。 下記のようにGemfileに記述する テストデータを作成する[factory_bot_rails]Gemも一緒に入れる ※[factory_bot_rails]は、テスト環境だけでなく開発環境でも rails console 等で動作確認ができるため、下記の…

GitHubのforkとclone

GitHubのforkとclone forkとは? 第三者のリポジトリを自分のリモートリポジトリにコピーすること cloneとは? リモートのリポジトリをローカルのリポジトリにコピーすること forkの手順 forkしたい第三者のGitHubのリポジトリに行き、右上にあるforkをクリ…

form_withのパラメーターの行き先の仕組み

form_withのパラメーターの行き先の仕組み [form_with]を使うと、パラメーターの行き先をcreateアクション(POST)やupdateアクション(PATCH)などと良い感じで分けてくれるが、この仕組みを説明します。 [app/views ファイル] <%= form_with model: @user, url…

DBの構造を直接確認する方法

DBの構造を直接確認する方法 [schema.rb]で確認できるのは、Railsが作成したDBの設計図だが、直接DBの設計図を確認する方法は以下になる。 [] $ sqlite3 db/runteq_normal_development 今回マイグレーションファイルを調べるにあたり便利だったコマンドがあ…

link_toの使い方について

[link_to]の使い方について [link_to]で以下のように記述した場合と生成されるHTMLは、以下のようになる [app/views ファイル] <%= link_to edit_admin_board_path(@board) do %> <button type="button" class="btn btn-success"><%= (t 'defaults.edit_button') %></button> <% end %> <a href="/admin/boards/1/edit"> </a>

RSpecのスクリーンショットのHTMLの確認

RSpec実行時のスクリーンショットのHTMLの確認 RSpec実行時にテストに失敗した時のスクリーンショットの確認方法は、テストが失敗したところでbinding.pryなどでテストを止めて[save_and_open_page]を実行するとHTMLが確認できる

セレクトボックスの実装

セレクトボックスの実装 下記のようなセレクトボックスを実装する方法です セレクトボックスの記述は、以下のようになる <%= f.select 属性, 選択肢の集合, {オプション}, {HTMLオプション} %> もしくは <%= f.select( 属性, 選択肢の集合, {オプション}, {H…

ransackを利用した日付指定での検索方法

[ransack]Gemを利用した日付指定での検索方法 下記のように日付を指定しての検索方法の実装方法になります フィールドにカレンダー機能を付与する場合は、以下のように[f.date_field]を利用する [app/views ファイル] <%= search_form_for @q, url: admin_bo…

enum_help Gemによるenumの翻訳

[enum_help]Gemによるenumの翻訳 下記のように設定したenumを日本語で表示できるようにするのが、[enum_help]Gem [app/models ファイル] enum role: { general: 0, admin: 1 } 上記のようにenumを設定した場合は、下記のようになる [enum_help]Gemを使った場…

メニューのアクティブ化

メニューのアクティブ化 下記のようにメニューボタンをクリックしたらアクティブ化する [手順] Bootstrapの機能により、classでactiveを設定すると設定した部分がアクティブ化する メニューのボタンが複数存在する時に以下のようにそれぞれにclassでactiveを…

ローカルのコミット履歴をGitHubにも反映させる方法

ローカルのコミット履歴をGitHub(リモート)にも反映させる手順 自分のGitHubを開き以下のようにRepositories(リポジトリ一覧)をクリックし、Newをクリックして新規のリポジトリを作成する。 ↓ 下記のような画面になるので、リポジトリの名前を決めてCreate r…

管理画面の作成

[管理画面の作成] 管理画面を作成するのに今回は、AdminLTEというパッケージ管理ツールを用いる。 [AdminLTE]をインストールするのにyarnからインストールする。 Gemからもインストールできるが、Gemだとメンテナンスが追いついていなく、バージョンも古いバ…