Rails関連のことを調べてみた2023年08月04日

Rails関連のことを調べてみた2023年08月04日

VScodeでhtml.erbファイルを編集する際入力補正を使いたい

■学習内容
VScodeの拡張機能について

■理解したポイントや参考になった情報
rails課題2からローカル環境で開発することにしたのでVScodeでコーディングしていたところ、html.erbファイルのスニペットが有効ではなかったので自分なりに調べて有効化してみた。

1.拡張機能でrailsと検索し、プラグインをインストール
html.erbの拡張子で文法チェックとスニペットが使えたがhtmlタグのスニペッ トは有効化されなかった

2.settings.jsonに変更を加えた
 html.erbでhtmlのスニペットを有効化するためにsettings.jsonのemmetにhtml.erbにhtmlをインクルードした

元記事を表示

Railsの日付フォーマット方法まとめ

rails日付フォーマット方法まとめ
1.strftime()メソッドを使う
メリット
・記述が簡単
デメリット
・複数をフォーマットする場合、変更が大変で保守性が悪い

2.config/initializers/time_formats.rbに記述
Time::DATEFORMATS[:id]=”%Y/%m/%d”
と記述しto_s(:id)メソッドでフォーマットする
datetime型はTime、date型はDateで記述
メリット
・保守性が高い

3.I18nでconfig/locale/ja.ymlに記述
lメソッドでフォーマット
メリット
・保守性が良い
デメリット
・言語ごとに記述する必要がある

参考サイト
https://qiita.com/fugo0315/items/2004a8ebf2984aba47c5
https://qiita.com/jnchito/items/831654253fb8a958ec25

元記事を表示

Railsのバリデーションについて

■学習内容
バリデーションについて

■理解したポイントや参考になった情報
1、バリデーションはモデルに記述する場合とマイグレーションファイルを実行してDBで行う場合があるが、両方に書いた方が良い

理由:モデルに書く場合はエラーメッセージの表示などユーザーにわかりやすくスタ得ることができる
DBで行うとサーバー側でDBに直接データを打ち込む時にも対応できる。

2、Not Nullの制約について
モデルでvalidates :column名, presence: true
とする場合は空文字も弾くが、マイグレーションファイルを実行する場合は空文字は弾けない

また、rubyとDBではNullの扱いが異なる点に注意
rubyではnilはfalseとして扱われるが、DBではtrueでもfalseでもない値として扱われる
この違いによるエラーを防ぐためにマイグレーションファイルを実行する際にboolean型のデフォルトの値を設定しておくと良い

元記事を表示

いいね!機能の実装方法

## いいね機能の実装方法をこちらに記載致します。

まず最初にmoelのlike.rbを作成し、その後、ユーザーモデルと投稿にあたるモデルにhas_manyを使って関連づけます。

“`
class Like < ApplicationRecord belongs_to :user belongs_to :shop end ``` ``` class User < ApplicationRecord has_many :likes end ``` ``` class Shop < ApplicationRecord has_many :likes end ``` 続いていいね!ボタンを表示したいファイルでの書き方を説明します。 ボタンを押すことにより、見た目が変化するため、if文を設置する必要があります。 ``` <% if current_user.likes.exists?(shop_id: shop.id) %>
<%= link_to delete_like_path(shop), method: :delete, class: "like-btn"

元記事を表示

email_specのhelperメソッドのチートシート

## はじめに
普段Capybaraでのメールのテストは主に`open_email`を使っているのですが、他にメソッドがあるのか気になってコードを読んだところ、想像していたよりも色々なケースを想定した便利なメソッドがあったのでまとめてみました。(古いからかまとめている記事がなかったので、、、)

読んだコードは下記

https://github.com/email-spec/email-spec/blob/main/lib/email_spec/helpers.rb

https://www.rubydoc.info/gems/email_spec/EmailSpec/Helpers#open_email-instance_method

## メソッド一覧

各メソッドの説明に「メールを取得する」と記載していますが、正確には`Mail::Message`クラスのインスタンスを取得するという意味です。

※コードだけでは理解が怪しい処理は動かして挙動確認もしていますが、もし処理に関して間違ったことを書いている場合はコメントでご指摘いただけるとありがたいです。

### find_e

元記事を表示

【Ruby】空のハッシュに自己代入(+=)したい

# できなかったこと
{}を定義したhashに自己代入演算子を使ったがエラー
“`ruby
hash = {}
hash[:hoge] += 1 # => undefined method `+’ for nil:NilClass (NoMethodError)
“`

# 解決策
ハッシュにデフォルト値0を設定し解決
“`ruby
hash = Hash.new(0)
hash[:hoge] += 1 # => 1
“`

# Hash.new(0)とは?
ハッシュにはキーに対応する値が存在しない時のデフォルト値を設定できる。`Hash.new(0)`でハッシュを生成した場合、デフォルト値が0になる。
設定がない場合、デフォルト値はnilになる。

“`ruby
hash = {} # => {}
hash.default # => nil

hash = Hash.new(0) # => {}
hash.default # => 0
“`

# なぜ自己代入演算子(+=)が使えたのか
自己代入演算子を使わない場合を考えて納得。
“`ruby
hash[:hoge] =

元記事を表示

Webアプリケーションをdocker化する(Ruby on Rails7.0 × postgres12)

## はじめに
本記事はRuby on Rails7.0とPostgresql12で構築したwebアプリケーションへdockerを導入する手順をまとめたものです。
“dockerを導入する”ことにフォーカスした記事となのでrubyやRails、postgresの知識がなくてもお読みいただけます。

## この記事でわかること
– Webアプリケーションをdocker化する方法
– ベースイメージのバージョンの決め方
– Dockerイメージの軽量化
– docker-composeを使うメリット

## フォルダ構成
![スクリーンショット 2023-07-29 17.10.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/636274/0b26bc04-3396-6def-d591-bded1c9b7296.png)
今回dockerを導入するにあたって追加したファイルは以下の三つです。上から順に説明していきます。
– Dockerfile
– docker-co

元記事を表示

Active Storageの実際の画像の保管場所はどこ?

## ActiveStorageで保存した画像はどこにあるの?
単刀直入に言うとルートディレクトリ配下のstorageフォルダに入ってる。
[Railsのディレクトリ構造について](http://www.code-magagine.com/?p=4326#:~:text=%E3%81%9D%E3%81%93%E3%81%9D%E3%81%93-,storage,-ActiveStorage%E7%94%A8%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB)

そしてファイル保存形式がpngやjpegではない!
データベースに適したBlob型に変換されてstorageフォルダに保存される。

### Blobって何?
> データベース管理システム(DBMS)においてバイナリデータを格納する場合のデータ型である。画像や音声、その他のマルチメディアオブジェクトがBLOBとして格納される。
参考文献:[Blobとは?](https://ja.wikipedia.org/wiki/%E3%83%90%E3%82%A4%E3%83%8A%E3%83%AA%E3%83%BB

元記事を表示

【個人開発】カメラの設定値を共有するカメラ初心者向けサービス「ShotSharing」をリリースしました

## はじめに

こんにちは、@crew_runteq38と申します。
SES企業からWebエンジニア転職を目指しております。
プログラミング学習中の身であるため、技術的な内容に誤りを含んでいる可能性があります。
おかしな記述がありましたらコメント等で教えていただけたらと思います:bow:

## 作成したサービス

サービス名:[Shot Sharing](https://shotsharing.vercel.app/)

![og-image.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1865715/fc16a7da-7dfe-52dd-8d0c-fe4108894a54.jpeg)

– サービスURL : https://shotsharing.vercel.app/

– Github : https://github.com/Kaiwa-Jun/shotsharing

## 開発の背景

私の趣味は一眼レフカメラで写真を撮るとこなのですが、一眼レフカメラを趣味にしている方の中で、**

元記事を表示

RSpecの基本 モデルスペック

# RSpecとは
RSpecはRubyで作られたテスティングフレームワークです。単体テストや結合テストなどを自動で行うために使います。

## 特徴
RSpecは主に以下の3つの特徴があります。

**可読性**

RSpecのシンタックスは自然言語に近い形でテストケースを記述することが可能であり、結果的にテストケースがそのままドキュメンテーションとしても機能します。

**柔軟性**

RSpecはRubyのフレームワークとして、テストを記述するための多くの方法を提供しています。これにより、開発者はプロジェクトのニーズに応じてテストをカスタマイズすることができます。

**明示的なテストケース**

RSpecは「describe」と「it」を使ってテストケースを明示的に分類し、それぞれのテストケースが何をテストしているのかを明確にします。

## 最も簡単な例
“`ruby
describe Calculator do
describe “#add” do
it “returns the sum of its arguments” do
expect(2

元記事を表示

Railsのform_withを自分なりにまとめてみた

## はじめに
未経験からプログラミング学習中のkekiと申します。

Railsのログインの仕組みを理解する中で、`form_with` の機能と個人的に難しかった疑問二点を記事にしてみました。
ログイン付近を学習中の方や、その復習をしたい方向けの内容です。
修正・追記あれば随時更新していきます。

## form_withとは
**Railsで情報を送信するためのヘルパーメソッド**です。
`form_with`を使うことにより、簡単に入力フォームに必要なHTMLを作成することができます。
かつての`form_tag`や`form_for`メソッドをひとまとめにした大変便利なものです。
以下のような初期設定があります。

– デフォルトでは`POST`メソッドの処理がされる
– デフォルトではid属性やclass属性は付与されない
– デフォルトで`remote: true`が付与
– 関連モデルがある場合はモデルを指定し、ない場合はURLを指定する

## 主な機能
大きく6つにまとめました。
1. **自動的に送信先のアクションをcreateかupdateに振り分けてくれる**

元記事を表示

既存のRailsアプリ(Postgres使用)をDocker化する手順

Dockerとdocker-composeについて学習し既存のRailsアプリをDocker化したので、その手順をまとめたいと思います。完成版は[こちら](https://github.com/yokoyamamn/rails-docker)です。

# 前提
– Dockerの基礎知識については学習済みと仮定します。
– 今回使用する既存のRailsプロジェクト名は`rails-docker`になります。
– DBはpostgresのversion12を使用します。
– ホストのファイルシステムとコンテナのファイルシステムを同期させます。

# 手順
大まかに以下のようになります。
– `database.yml`の編集
– プロジェクト直下にDocker関係のファイル作成
– `Dockerfile`の編集
– `compose.yaml`の編集
– docker-composeで起動
– `localhost:3000/`にアクセスできるか確認

## `database.yml`の編集
以下のように記述します。`password`のところは環境変数を設定します。
“`ru

元記事を表示

株式会社PAMテスト

元記事を表示

Qiitaの長期インターンに参加して。

はじめまして。こんにちは。

# これは何の記事?
私ごとですが、先日Qiitaの長期インターンを退職してきました。2月から始めたので約5ヶ月くらいですかね。
この記事では私がQiitaのインターンに参加して思ったこと学んだこと、これからエンジニアのインターンに参加したいと考えている学生さんたちに伝えたいことを書いてきます。

# なぜQiitaのインターン?
私がちゃんとwebアプリケーション開発を始めたのは2022年の秋頃でした。HTML, CSSのベーシックなところから始まり、年末ごろにはvue.jsで一つアプリケーションを公開したりしていました。
次はReactで何か作ってみたいなぁと勉強を始めた頃に、唯一のエンジニアの友達に「インターンとかやらないの?」という誘いを受けてインターンに参加してみようとなりました。その彼が参加していたインターンがQiitaだったので、自分もそこに応募してみたという感じです。

ちなみに興味がある方はこちらから応募できます!

採用情報


![Screenshot 2023-07-30 at 21.03.

元記事を表示

【Rails】リンクで言語を切り替える方法

オリジナルアプリ製作中にこの機能の実装をしたかったので、調べて実装してみました。
(間違いありましたらご指摘いただけますと幸いです。)

# 1.デフォルトの言語などの設定

“`application.rb
config.i18n.available_locales = %i(ja ko)
#()の中にjaやko等、使用可能な言語の記載を行う
config.i18n.enforce_available_locales = true
#enforce_available_localesをtrueにすることで上記以外の言語の際はエラーを発生させることができる
config.i18n.default_locale = :ja
#デフォルトの言語を設定する
config.i18n.load_path += Dir[Rails.root.join(‘config’, ‘locales’, ‘**’, ‘*.{rb,yml}’).to_s]
#ymlファイルを読み込む設定をする
“`

# 2.コントローラー

“`appl

元記事を表示

devise導入後ログアウトできないエラーの解決

deviseを導入してログアウトの時にcreated at に関するエラー文が出ていた。
migration fileに

“`ruby
## Recoverable
t.string :reset_password_token
t.datetime :reset_password_sent_at

## Rememberable
t.datetime :remember_created_at
“`

これを記述したら解決した。

元記事を表示

RSpecを実行するとWebdrivers::VersionErrorが発生する場合の対処方法

## 発生する問題

RSpecのテストを実行すると以下のようなエラーが発生する。

“`
Webdrivers::VersionError:
Unable to find latest point release version for 115.0.5790. You appear to be using a non-production version of Chrome. Please set `Webdrivers::Chromedriver.required_version = ` to a known chromedriver version: https://chromedriver.storage.googleapis.com/index.html
# ./spec/system/tasks_spec.rb:24:in `go_to_project’
# ./spec/system/tasks_spec.rb:14:in `block (2 levels) in


# —————–

元記事を表示

devise_token_authでproviderを変更する

## 概要

RailsのAPIサーバでdevise_token_authによるトークン認証を実装しようとした際に、providerにかなり苦しめられたので、providerを変更する手順について記事にしました。

## やりたいこと
devise_token_authのデフォルトのproviderはemailになっていますが、私はただの文字列(login_idと定義)で認証を行いたかったので、providerを’login_id’に変更したい。これは、usernameなどで認証を行いたい場合も同じで、これから説明することを行う必要があります。

## 方法
以下を行うことでproviderの変更ができます。
– devise_token_authのUserテーブルのproviderを’email’→’login_id’にする
– providerをオーバライド

それぞれについて説明していきます。

## テーブルのproviderを変更
devise_token_authでインストールした直後(devise_token_authをinstallしてからdb:migrateするまで)

元記事を表示

Ruby on Railsのエラー画面の読み方

## 自己紹介
はじめまして、はると申します!
現在はスクールに通いながら学習をしており、学習開始から4ヶ月が経過しました。
 
## 概要
Ruby on Railsでアプリ開発中に出会うエラー画面の基本的な読み方について、
調べたりChatGPTに相談しながら、勉強を兼ねてまとめたものをアウトプットしてみます。
初学者のため、間違っている箇所もあるかもしれませんのでその際は教えて頂けると嬉しいです?
(エラー例は、Ruby 3.1.3、Rails 7.0.5で作成した学習時間を記録するアプリで、記事のために意図的に起こしたものです)
 
## エラー画面の見方 例①NoMethodError
![6c5c3b7e63d012d172f585deeee8bd19.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3471604/8a1c7c9e-1f75-92a8-27c0-004a9ec079c1.jpeg)
 
項目の上から順に意味を確認していきます。
 
#### エラータイトル
`NoM

元記事を表示

【rails】【fullcalendar】カレンダーの表示(月週日)切り替え、予定ごとに色を変える

# 経緯
カレンダーの表示切り替えり、予定によって色分け出来たらいいなと思い実装してみました。
環境はrails6,ruby3.1.5です。
jqueryを使う記事が多いですが使わずに実装しました。

# 完成イメージと本記事にて、できる事・できない事
完成イメージ分かりやすいように公式ドキュメントのdemo貼っておきます。

https://fullcalendar.io/demos
## この記事で出来ること、出来ない事
– 出来る
– 予定によって色分け
– 月表示、週表示、日表示の切り替え
– 出来ない
– 表示されてる予定をドラッグアンドドロップで移動
– 詳しい解説(公式ドキュメントにほとんど書いています)

# 実装
それでは実装していきます。

::: note
前提
– 投稿用のMVCとしてPostを使用しています。
– 投稿機能は実装されている前提
– indexページにカレンダーを表示させる。
>カラムは以下を用意
– 予定開始用として`start_time:datetime`
– 予定終了用として`end_time:datetim

元記事を表示

OTHERカテゴリの最新記事