Programming Journal

学習したことの整理用です。

Rails

'type' カラムの追加でエラー

typeカラムを追加したらエラーが 実務で既存のテーブルに新たに「種別」を示すカラムを追加したく、typeというカラムを追加しました。 ※参考コードは実務のではなく適当なサンプルです。 class AddTypeToPayment < ActiveRecord::Migration[5.1] def change …

【Rails】rails-adminを使って簡単に管理画面を作る

簡単に管理画面をつくりたい ユーザー情報を一覧で見られる単純な管理画面があればいいので、一番簡単に管理画面ができそうなrails-adminを使いました。 rails-admin × sorceryの参考記事が見つからなかったのでブログに残しておきます。 環境 Rails 6.0.3 r…

【エラー解消メモ】[BUG] Segmentation fault

エラー ローカルではRSpecが通るのに、CircleCI上で落ちてしまう。 環境 Rails 6.0.3 Dockerのimageは以下のとおり jobs: build: docker: - image: circleci/ruby:2.7.2-node-browsers-legacy エラー内容 [BUG] Segmentation fault 今まで遭遇したことのない…

chartkick × Highchartsでドーナツグラフを作る

実装したいこと ドーナツグラフの真ん中に合計額 ラベルはグラフ上に表示 ラベルが細かくて重なってしまう場合は非表示 凡例を非表示 chartkickを使用したら、簡単に実装できました。 ただ、chartkick × Highchartsについての日本語記事がほぼない&各オプシ…

【Rails】 default値の変更

ちょっと詰まったのでメモ フォーム入力画面でplaceholderを表示させたいけど、デフォルト値を設定していたため、表示できない 良し悪しは置いといて、default値を削除したい。 DBはMySQL Rails 6.0.3.4 試したけど、できなかったmigrationスクリプト class …

has_oneでbuildメソッドを使うときの書き方

アソシエーションは以下のとおりで、1対1の関係 class User < ApplicationRecord has_one :user_profile, dependent: :destroy end class UserProfile < ApplicationRecord belongs_to :user end class UserProfilesController < ApplicationController # 略…

Twitter認証機能の追加

半日以上かかってしまったので、エラー部分について自分用に反省メモφ(・・ 127.0.0.1:3000 に飛びたいのに何故か/loginに遷移する Twitterログインボタンを設置しているTOPページに遷移するためのstatic_pages_controller.rbでskip_before_action :require_lo…

CircleCIの導入

CircleCI githubにpushすると同時にCircleCIが起動し、RSpecテストやrubocopのLintチェックを自動で走らせてくれます。 私はズボラでpush前にrubocopやRSpecを実行するのを忘れがちなので、正しいコードをmergeできるようにCircleCIを導入しました。 詰まり…

ポートフォリオ作成

設計の段階で何を使っていいか戸惑うことがあったのでメモφ(・・ 使ったツールなど、適宜更新していく。 画面遷移図 adobeXDを使用。 画面遷移の順番を指定できる。 リンクも作成できるので、READMEに貼り付けられる。 画面遷移の順番がうまく指定できず悩んだ…

【API】【Rails】エラーメモ

エラーを出しまくったので、繰り返さないようにメモ。 wrong number of arguments Postmanを使って、articleの更新と削除を試していたのに、できない。 新規作成のPOSTと一覧取得のGETは問題なし。 コードは基礎的なものだしパッと見間違っていなそう… error…

【Rails】【API】雑多なメモ

response.headers HTTPheaderのAccessTokenにtokenをセットしたいとき Provides access to the request's HTTP headers, for example: response.headers['AccessToken'] = token Action Controller の概要 - Railsガイド ActionDispatch::Request class Net:…

【Rails】【Ruby】雑多なメモ

知らないメソッドといくつか出会ったので、メモ SecureRandom.uuid UUID (Universally Unique IDentifier) を生成して返します。 SecureRandom.uuid (Ruby 2.7.0 リファレンスマニュアル) 例えば、ログイン認証で使うaccess_tokenを安全な乱数にするときに使…

【Rails】【エラー】method: :deleteで指定しているのにshowアクションへ飛んでしまう

エラー発生 復習用に簡単なCRUD機能のついた記事投稿アプリを作成しています。 削除用のボタンを押しても削除されず、なぜかshow詳細ページへ遷移してしまう…。 method: :deleteで指定し、Cromeの検証画面でも正常にみえるのに… Crome検証画面 = link_to 'de…

【Rails】雑多なメモ

all_day 昨日作った記事だけ取得するscopeを作りたかったとき、Date.yesterdayやTime.current.yesterdayだと想定している挙動にならない… all_dayを使う! # NG scope :yesterday_published, -> { where(published_at: Date.yesterday) } # Good scope :yest…

【Rails】Active Storageを使って画像を複数枚アップロード&削除する

実装したいこと 複数枚の画像を一度にアップロードする Model Controller View 躓いたところ アップロードした画像を削除するには Controller Rooting View 実装したいこと 以前、ActiveStorageを使って画像をアップロードする機能を実装しました。 今回は、…

【Rails】Active Storageを使って画像をアップロードする

実装したいこと 以前、gemのCarrier Waveを使って画像アップロード機能を実装しました。 今回は試しにActive Storageを使用してみたいと思います。 初めて使ったのですが、すごく簡単でした。 ただし、ファイルの形式のバリデーションやデフォルト画像の設定…

【RSpec】画像の登録と表示についてテストする

実装したいこと 画像投稿機能について、前回実装した内容をテストしたい 画像選択の仕方と、画像の位置をどう判定するのか悩みました。 study-diary.hatenadiary.jp 前提 RSpec、Factory Botは設定済みです。 Active Storageセットアップ Active Storageのサ…

【Rails】ユーザーの入力値を画像表示に反映させる

実装したいこと 記事投稿アプリで、記事のアイキャッチ画像を設定できます。 アイキャッチ画像をユーザーの入力した幅に設定したい。 アイキャッチ画像をユーザーの選択した位置に設定したい。 前提 記事投稿の機能は実装済です。 今回は画像の表示を変更す…

【Rails】【 i18n】日本語化する

初期設定 config/application.rb モジュール内に以下を記入。 ※私は誤ってモジュール外に記入し、rails sエラー「undefined method 'config'」となって数十分溶かしました。 config.i18n.default_locale = :ja ##デフォルトの言語設定 config.i18n.load_path…

【Rails】【devise】deviseを使って認証機能を実装する

実装したいこと ログイン機能・ユーザーの新規作成機能を実装したい。 sorceryは使ったことがあったのですが、試しにdeviseでも認証機能を作成したいと思います。 とりあえず、必要最低限な部分は結構簡単にできました。 実装の流れ gem 'devise'のインスト…

【Rails】【Pundit】認可機能の追加

実装したいこと 記事投稿アプリで、管理者以外は記事のCRUD機能を使用できないようにしたい。 権限のないユーザーが該当のページにアクセスしたときは、403エラー画面を表示させる。 実装の流れ Punditの導入 policyファイルの設定 Controller設定 View設定 …

【Rails】【cron】1時間ごとにタスクを実行する

実装したいこと 実装の流れ Rakeとは cronとは Rakeタスクの実装 前提 私のNGコード OKコード Rakeタスクの実行 gem wheneverの導入 suchedule.rb Crontabへの書き込み 実装したいこと 記事公開アプリがあります。 記事の状態が「公開待ち」で公開日時を指定…

【Rails】FatControllerをスッキリさせる

実装したいこと 前提 FatController 何がダメなのか 改善 諸々をモデルへ切り分ける 修正したコントローラ 実装したいこと 記事を投稿するアプリの編集画面で、記事のステータスを「下書き」「公開」「公開待ち」に分類したい。 ステータスと公開日時は編集…

【Rails】【エラー】TypeError - no implicit conversion of nil into String:

エラーを解消したい 記事投稿アプリの中で、記事の中身(文章)を記入せずに空のままプレビュー画面を見ようとしたらエラーがでました。 TypeError - no implicit conversion of nil into String: エラー画面 英単語の意味 implicit suggested or understood…

【Rails】パンくずリストの実装

実装したいこと gem " gretel"の導入 Generating breadcrumbs configuration file View RSpec 実装したいこと ウェブページの上部にパンくずリストを表示したいです。 パンくずリストとは…パンくずリスト 自分が今どのページにいるか分かるリスト。 リスト内…

【RSpec】 管理者・一般ユーザーを分けてテストデータを作成する

実装したいこと trait マクロを使ってログイン機能だけセットする module ? macros? System Spec System Specの命名について NGコード 参考 実装したいこと 管理者と一般ユーザーで権限が違うため、それぞれのテストデータを作成したい。 trait トレイトを使…

【RSpec】gem Seed Fu

gem Seed Fu Seed Fu is an attempt to once and for all solve the problem of inserting and maintaining seed data in a database. It uses a variety of techniques gathered from various places around the web and combines them to create what is h…

【Rails】雑多なメモ

知らないメソッドが色々ありすぎて、忘れそうなのでメモしていきます。 protect_from_forgery with: :exception # Prevent CSRF attacks by raising an exception. # For APIs, you may want to use :null_session instead. protect_from_forgery with: :exc…

【Rails】ArgumentError - Nil location provided. Can't build URI エラーが出たら

エラーで悩んだのでメモ 画像を投稿するページで、画像を選択しないでプレビュー画面を開こうとすると以下のエラーになりました。 エラー画面 ArgumentError - Nil location provided. Can't build URI ArgumentError ArgumentError - Nil location provided…

【RSpec】System Spec

今回の記事の目的 実行するテストケースを限定したいとき 別タブで開いたページをテストしたいとき withinメソッド 確認画面のページ操作したいとき ApplicationHelperで定義したメソッドをRSpecで使いたいとき Updateのテストがうまくいかない。値が更新さ…