- 1. 【rails】ルーティングのパスの書き方。
- 2. Railsでモデルのバリデーションを回避するためのhidden_fieldの使い方
- 3. 【Rails】typeという名前のカラムがあるとエラーが出る
- 4. 「form_with」で使用できるタグ一覧
- 5. Railsで使われるテーブル結合方法について
- 6. 【個人開発】ペットのぶさかわを投稿するアプリ「ぶさかわフォト」をリリースしました。
- 7. 【初学者用】RailsにおけるSQLアンチパターンの解説と対応策
- 8. rails newコマンドでのエラー対処
- 9. 環境構築で苦戦
- 10. 【Rails】rake taskの使い方
- 11. データベースカラムのデータ型一覧
- 12. 🐈画面上で猫が邪魔してくださる Rails gem を作って世界を平和にする
- 13. rails エラーメッセージの日本語化
- 14. 【Raills】閲覧数のカウント
- 15. 【Rails】DM機能の実装※自己学習用
- 16. 【Rails】いいね数順に投稿を表示する機能の実装※自己学習
- 17. gemを使う?自分で書く?Starを確認しよう
- 18. RSpecでHTTP通信を記録するVCRの簡単な設定を考える
- 19. Dockerを使用したRubyOnRailsとNext.jsの開発環境構築ガイド
- 20. 【Rails】Cloud9でRailsアプリケーションを作成・設定する手順
【rails】ルーティングのパスの書き方。
初学者です。
本っっっ当に初学者です。railsで学んだことをノート代わりに簡単にまとめていこうと思うので、間違いなどあればコメントでご指摘いただけますと幸いです。
link_toでは、絶対パスを使うようです。
“`post.html
<%= link_to '投稿', '/posts/index' %>
“`ルーティングでのパスの書き方
“`ruby:qiita.rb
get “posts/index” => “posts#index”
“`
これも絶対パスらしい。はて?
絶対パスは先頭に必ず「/」が入るのでは???調べたところ、Railsは常にアプリケーションルート(トップページ等)を軸としてパスを解釈しているから、ルーティングでは先頭の/は書かなくてもいい、
link_toはrailsではなく、HTMLに書くから先頭の/がいるとのことらしいです。同じ絶対パスでも書き方が変わってくる、なかなか難しいですね。
Railsでモデルのバリデーションを回避するためのhidden_fieldの使い方
# はじめに
ユーザー登録画面を作成する際、presence: trueバリデーションを設定しているフィールドがフォームに含まれていない場合、バリデーションエラーが発生します。今回は、モデルを変更したくないけど、登録機能だけは完成させるためにバリデーションエラーを回避するために、hidden_fieldを使う方法を紹介します。# 問題
以下のように、presence: trueのバリデーションが設定されたモデルを使っているとします。“`
class User < ApplicationRecord validates :username, :email, :password, :phone_number, :address, :gender, presence: true, on: :create validates :email, length: { maximum: 255 }, format: EMAIL_FORMAT, uniqueness: { case_sensitive: false }, allow_blank: true validates
【Rails】typeという名前のカラムがあるとエラーが出る
## はじめに
DBにtypeという名前のカラムがある時にエラーが出たので、その対応をまとめます。## 問題
エラー文
“`ruby
ActiveRecord::SubclassNotFound (Invalid single-table inheritance type: xxx is not a subclass of yyy):
“`## 解決方法
typeカラムの名前を変更することでも対応できますが、それが難しい場合は以下のようにすることで対応できます。
“`ruby
class User < ApplicationRecord self.inheritance_column = :_type_disabled # この行を追加 end ``` ## 参考 https://qiita.com/ryonext/items/1a813639ab2a2a00058e
「form_with」で使用できるタグ一覧
# `form_with` で使用できるタグ一覧
`form_with` はRailsでフォームを簡単に作成できるメソッド
その主要な入力フィールドと補助的なフィールド一覧## 主要タグ
1. **`label`**
– ラベル表示
– 例: `f.label :name`2. **`text_field`**
– 一般的なテキスト入力フィールド
– 例: `f.text_field :name`3. **`email_field`**
– メールアドレス入力用
– 例: `f.email_field :email`4. **`password_field`**
– パスワード入力用
– 例: `f.password_field :password`5. **`hidden_field`**
– 隠しフィールド
– 例: `f.hidden_field :auth_token`6. **`text_area`**
– 複数行テキスト入力
– 例: `f.text_
Railsで使われるテーブル結合方法について
## はじめに
joinsやincludesメソッドを実行した時に生成される、SQLのクエリやテーブル結合の復習も兼ねて投稿しました。## 対象者
– なんとなくでActiveRecordのメソッド(joins,includesなど)を使っていた方
– SQLの基本を一通り学んだ方
– RailsでWebアプリ開発をこれから始める方## 今回使用するテーブル
### usersテーブル
| id | name | email |
| — | —— | —————— |
| 1 | taro | taro@example.com |
| 2 | hanako | hanako@example.com |
| 3 | jiro | jiro@example.com |—
### postsテーブル
| id | title | body | user_id |
| — | ———– | —–
【個人開発】ペットのぶさかわを投稿するアプリ「ぶさかわフォト」をリリースしました。
## はじめに
プログラミングスクール「RUNTEQ」を卒業し、Webエンジニアとして転職活動をしているにしかわです。
今回、「ぶさかわフォト」をリリースしました。
読みづらい箇所もあるかと存じますが、ぜひご覧いただけると幸いです。## 開発した理由
ペットで可愛いといえば、小さくて目がクリクリしている、モフモフしているイメージが浮かびませんか?
確かに可愛いですが、別の可愛さもあります。
私は、22kgのピットブルを飼っており、世間での可愛いイメージとは正反対の犬を飼っていますが、可愛いシーンがたくさんあります。 それが「ぶさかわ」です。
この「ぶさかわ」を共有したく今回サービスを開発しました。## どんなサービスか
[![Image from Gyazo](https://i.gyazo.com/8d39b43ae264f8ffb80ec5586e174be6.png)](https://gyazo.com/8d39b43ae264f8ffb80ec5586e174be6)サービス [ぶさかわフォト](https://busakawa.com/)
Github [Git
【初学者用】RailsにおけるSQLアンチパターンの解説と対応策
## はじめに
今までNext.jsやTypeScriptでフロントからバックまで触っていたのですが、Rails1年生となって開発に携わっている中で、遭遇する可能性のある主要なSQLアンチパターンとその解決方法をまとめました。初めてRailsを通してDB設計をする方の参考になれば幸いです。
## 目次
1. [文字列連結によるSQLインジェクション](#1-文字列連結によるsqlインジェクション)
2. [N+1クエリ問題](#2-n1クエリ問題)
3. [大量データの一括読み込み](#3-大量データの一括読み込み)
4. [不適切なインデックス設計](#4-不適切なインデックス設計)
5. [過度の正規化](#5-過度の正規化)
6. [単一テーブル継承(STI)の過剰使用](#6-単一テーブル継承stiの過剰使用)
7. [貪欲なフェッチ](#7-貪欲なフェッチ)
8. [不要なカラムの取得](#8-不要なカラムの取得)## 1. 文字列連結によるSQLインジェクション
### 問題点
ユーザー入力を直接SQLクエリに組み込むと、SQLインジェクション攻撃の危険性があり
rails newコマンドでのエラー対処
# 背景
初めてローカル環境で、Rails アプリケーションをつくろうとして、“Rails new“ コマンドを叩いたらいきなり躓いたので、メモ。
OS:Windows
使用しているアプリケーション:VSCode# 1. “’: No such file or directory
“` :出現したエラー
(略)“’: No such file or directory – git config init.defaultbranch (Errno::ENOENT)
“`
### 解決策特定のファイル内に存在する「“ ` “」が、原因で発生していることが分かった。エラー文から、ファイルを特定できたため、当該ファイルの「“ ` “」をすべて「’」に変更した。
https://qiita.com/TK_WebSE/items/f0a9cbd6e2b3431694bc
# 2. invalid byte sequence in UTF-8
“` :出現したエラー
Failed to load C:/Users/ユーザー名/.gemrc, invalid
環境構築で苦戦
# calender-app.setting
#### bash
“`
$ touch {docker-compose.yml,Dockerfile,Gemfile,Gemfile.lock,entrypoint.sh}
“`
#### Dockerfile
“`
# Rubyのバージョンを指定した公式イメージをベースに使用
FROM ruby:3.2.2# 必要なパッケージのインストール
RUN apt-get update -qq \
&& apt-get install -y nodejs postgresql-client npm vim \
&& rm -rf /var/lib/apt/lists/* \
&& npm install –global yarn# コンテナの作業ディレクトリを指定
RUN mkdir /myapp
WORKDIR /myapp# ホストのGemfileとGemfile.lockをコンテナにコピー
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.l
【Rails】rake taskの使い方
## rake taskとは?
実行したい処理を記述しておき、`rake task`コマンドを利用して実行できます。
複雑な処理をタスク化しておくことで、簡潔なコマンドで実行できるため便利です。## rake taskの作成方法
以下のコマンドを実行して、taskファイルを生成します。
“`terminal
$ rails g task
“`“`ruby
namespace :test_task do
desc ‘テストタスク’ # 実行したいタスクの説明
task :nothing do
end
end“`
DBにデータを登録するなどの場合は、`:environment`と記述します。
“`ruby
namespace :insert_user do
desc ‘ユーザー登録タスク’
task aaa :environment do
User.create(name: ‘花子’, age: 18)
end
“`## 参考文献
https://guides.rubyonrails.org/
データベースカラムのデータ型一覧
データベースにおけるカラムのデータ型の備忘録
—
## データ型一覧
| データ型 | 説明 |
| ———— | ———————————- |
| `string` | 短い文字列 |
| `text` | 長い文字列 |
| `integer` | 整数(例えば1や100など) |
| `float` | 小数点を含む数字(例えば1.23) |
| `decimal` | 小数点を含む数字(小数点の桁数指定可能) |
| `datetime` | 日付と時間(例:2024-10-05 12:30:00) |
| `timestamp` | 特定の瞬間を表
🐈画面上で猫が邪魔してくださる Rails gem を作って世界を平和にする
こんにちは、とまだです。
**猫ってかわいいですよね🐈**
私は猫を飼っています。
猫を飼っていると、目の前に猫が出てきて作業の邪魔をされることがありますが、それはそれでご褒美なのです。
ただ、猫アレルギーの人や、猫を飼うことができない環境にいる人にとっては、猫と触れ合う機会がなかなかありません。
そこで私は考えました。
> **誰もが猫に邪魔される幸せを味わえる世界を作りたい!**
この Gem は、そんな世界征服を目指す Ruby on Rails アプリ用の Gem です。
何を言っているか分からないかもしれませんが、**こういうこと**です👇
![画面収録-2024-10-04-19.45.20.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/364501/3ea1765e-93f2-9c3c-a9ec-26572e9bc655.gif)
これであなたの作業も捗ること間違いなしですね!!!!
休日に暇すぎてこの gem をご存知 [RubyGems.org](https:/
rails エラーメッセージの日本語化
# エラーメッセージの日本語化
### 日本語の言語設定
application.rbを編集して、言語設定を変更
:jaは日本語設定にするという意味~~~config/application.rb
# 中略
module Pictweet
class Application < Rails::Application # Initialize configuration defaults for originally generated Rails version. config.load_defaults 7.0 # 日本語の言語設定 config.i18n.default_locale = :ja # 省略 end end ~~~ ### Gemfileを編集 日本語に対応する"rails-i18n"というGemを導入 rails-i18n このGemの導入によって、下記サイトに記述してある日本語を使えるようになるみたいです。 [rails-i18nに登録されている日本語](https://github.com
【Raills】閲覧数のカウント
### 要件
1. **各投稿(Book)が表示された回数(閲覧数)をカウントする**
2. **閲覧数を一覧ページ(indexページ)に表示する**—
### 実装の全体的な流れ
1. **Bookモデルに閲覧数を保存するカラムを追加**
2. **`show` ページが表示されるたびに閲覧数をカウントする処理を追加**
3. **`index` ページで各Bookの閲覧数を表示**—
### 1. **Bookモデルに閲覧数を保存するカラムを追加**
まず、各投稿の閲覧数を保存するために、`Book` モデルに **`view_count`** という新しいカラムを追加します。このカラムに、各投稿が表示された回数を保存していきます。
#### マイグレーションの作成
新しいカラムを追加するために、「マイグレーション」というデータベースの変更を反映するスクリプトを作成します。
ターミナルで以下のコマンドを実行します。
“`bash
rails generate migration AddViewCountToBooks view_count:int
【Rails】DM機能の実装※自己学習用
### 要件
1. **ユーザー同士が1対1のチャットルームでDM(ダイレクトメッセージ)を送れるようにする**
2. **相互フォローしているユーザーのみチャットルームにアクセス可能にする**
3. **相互フォローしていないユーザーにはチャットルームのリンクを表示しない**—
### 実装の全体的な流れ
1. **チャットルームとダイレクトメッセージのモデルを作成**
2. **チャットルームの作成時に、重複しないように処理を追加**
3. **相互フォローしていない場合、チャットルームのリンクを表示しない**
4. **チャットルーム内でメッセージを送る処理を追加**
5. **エラー修正と要件変更の対応**—
### 1. **チャットルームとダイレクトメッセージのモデルを作成**
まず、チャットルームとダイレクトメッセージを管理するためのモデルを作成します。モデルとは、データベースのテーブルとプログラムの橋渡しをする部分です。
#### モデルの作成
以下のコマンドを実行して、チャットルームとメッセージのモデルを作成します。
“`bash
【Rails】いいね数順に投稿を表示する機能の実装※自己学習
### 1. **Favorite(いいね)の数によって表示順を変更する実装手順**
### 実装の全体的な流れ
1. **過去1週間での「いいね」数を数える仕組みを作る**
2. **「いいね」数が多い順に投稿を並び替える**
3. **並び替えた投稿を画面に表示する**—
### 1. **過去1週間の「いいね」数を数える**
まず、投稿が「いいね」された数を数える必要があります。そのために、`Book` モデルに「この投稿に何回「いいね」がされたか?」を調べるメソッドを追加します。
#### `Book` モデルにスコープを追加
`Book` モデルとは、投稿に関する情報を管理する部分です。ここに「過去1週間のいいねの数を数える」ための仕組み(スコープ)を追加します。
“`ruby
class Book < ApplicationRecord has_many :favorites # 各Bookに対する「いいね」を管理する関連 # 過去1週間の「いいね」数が多い順にBookを並び替えるメソッド scope :popular_in_last
gemを使う?自分で書く?Starを確認しよう
# 今回はgem導入時に自分が注意すべきだと思う点について話したいと思います。
それはズバリ
### Starの数
です# gemって何?
:::note info
gemとは、RailsやRubyのアプリケーションに追加の機能を提供するために使用されます。例えば、認証システム、ファイルアップロード、テストフレームワーク、データベース接続などの機能を提供するものがあります。
:::# 具体例
例えば、画像についてバリデーション処理を行いたい場合、
active_strage_validationを利用してもいいですが、このgemのstarを見ると、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3878564/5755fbfb-707d-2fe6-3de1-c46668bee443.png)
1kしかstarがついていないことがわかります。なので、このgemを入れるよりは、
“`
class Article < ApplicationRecord has_one_a
RSpecでHTTP通信を記録するVCRの簡単な設定を考える
## はじめに
[VCR]という gem を使うと、[RSpec]のテスト実行中に API を直接叩かず、代わりに過去のリクエスト・レスポンスの記録(カセットと呼ばれるYAMLファイル)を繰り返し使用することができます。
[VCR]には色んな設定項目がありますが、個人的には結局はシンプルな使い方しかしないことが多いので、[VCR]の基本機能を簡単に使える設定を考えてみました。
[VCR]の細かい機能については[公式ドキュメント][VCR]やネット上のブログ記事をご参照ください。
https://benoittgt.github.io/vcr
https://www.rubydoc.info/github/vcr/vcr
[RSpec]: https://rspec.info/
[RSpec – Hooks]: https://rspec.info/documentation/3.13/rspec-core/RSpec/Core/Hooks.html
[RSpec – Metadata]: https://rspec.info/documentation/3.13/rspec
Dockerを使用したRubyOnRailsとNext.jsの開発環境構築ガイド
# はじめに
Webアプリケーションの開発環境を構築する際に、Dockerを使用することは効果的な方法の1つです。特に、Rails APIモードとNext.jsを組み合わせて開発する場合、Dockerを利用することで環境の構築と管理を簡素化できます。この記事では、Dockerを使用してRails APIモードとNext.jsの開発環境を構築する手順を紹介します。
# 技術スタックの概要
### Rails APIモード
RailsのAPIモードは、フロントエンドとバックエンドを分離して開発する場合に便利な機能です。APIモードを使用することで、データの提供と処理を行うバックエンドのみを構築できます### Next.js
Next.jsは、Reactアプリケーションの開発をサポートするフレームワークです。サーバーサイドレンダリングや静的サイト生成などの機能を提供し、パフォーマンスの向上やSEO対策に役立ちます### Docker
Dockerは、コンテナ仮想化技術を使用してアプリケーションを環境に依存せずに実行することができるツールです。開発、テスト、本番環境など、異なる環
【Rails】Cloud9でRailsアプリケーションを作成・設定する手順
# 開発環境
Rails version: 6.1.7.8
Ruby version: ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-linux]# 概要
– Railsアプリケーションの作成手順と基本構造
– 主要ディレクトリ(app, bin, config, db, public, test)の役割
– Gemとは何か、Gemfileの役割について説明
– 画面表示に必要なファイル(routes.rb, controllers, views)の機能
– アプリケーション作成からサーバー起動までの手順を詳細
– エラー対処法(プラグイン追加、ホスト設定)について# ① アプリケーションの作成手順
以下のコマンドでRailsアプリケーションを作成します。
“`ruby:ターミナル
rails new 任意のアプリケーション名
“`
`※environment下で行うこと`
ターミナル上に**create**という文字がたくさん表示されれば、正常にアプリケーションが作成されています。
もし以下