Rails関連のことを調べてみた

Rails関連のことを調べてみた

dockerでrailsアプリを動作させるのとgitとgithubの使い方

# dockerの中のrailsアプリを実行する
①コンテナを再起動させる
“`
docker-compose up –build
“`
②コンテナの中に入るために、
コマンドを書いて、別のターミナルを開いてアプリのファイルまで行ってから

“`
docker-compose exec web bash
“`
コマンドを打つ
③サイトにアクセスする
“`
localhost:3000
“`

# gitとgithubの使い方
コードをgithubにアップするためには、
①現在の変更したファイルをステージ(追加)する。
“`
git add .
“`
②ステージされた変更をコミット(確定)させる。
これにより、ステージされた変更がローカルリポジトリに保存されます
“`
git commit
“`
③ローカルリポジトリの変更をリモートリポジトリに反映させる
“`
git push
“`
# PostgreSQLに入るには
“`
docker ps
“`
を出力して今動いているコンテナのIDを取得する
そしてPostgreSQLのIDをメモして
“`
dock

元記事を表示

ActiveRecord::Core の clone と dup の違い

## clone と dup の違い

– clone
– shallow コピー
– **id を保持する**
– **タイムスタンプやロックに関する属性を保持する**
– **属性はコピーしない**
– つまり、clone したオブジェクトの属性を変更すると、元のオブジェクトの属性も (同じオブジェクトなので) 変更されてしまう
– アソシエーションはコピーしない

– dup
– shallow コピー
– **id は保持しない (新規レコード)**
– **タイムスタンプやロックに関する属性は保持しない**
– **属性をコピーする**
– アソシエーションはコピーしない

“`rb
yoyo = Yoyo.find_by!(name: ‘モジョ’)
cloned_yoyo, duped_yoyo = yoyo.clone, yoyo.dup

# duped_yoyo は新規レコード扱い。
[yoyo.id, cloned_yoyo.id, duped_yoyo.id]
#=> [1, 1, nil]
[yoyo.new

元記事を表示

ルーティングは極力ルーティングヘルパーを使おう

この記事はプログラミング学習者がアプリ開発中に躓いた内容を備忘録として記事におこしたものです。内容に不備などあればご指摘頂けると助かります。

## 記事投稿の背景
この記事ではアプリ制作中に分かったview側でのルート指定の方法やそれぞれのルーティングのメリット・デメリットをご紹介していきます。

## ルート指定の方法

以下の資料はRailsで閲覧できるルーティングのリストです。
“`ruby:docker compose exec web bin/rails routes
docker compose exec web bin/rails routes
Prefix Verb URI Pattern Controller#Action
home_index GET

元記事を表示

rails 都道府県をプルダウンで選択できるようにする #初心者

# 1. 背景

タイトルの通り都道府県をプルダウンで選択できるようにする方法をまとめました。
始めは、htmlをべたっと書いていたのですが、Active_Hashと言うものの存在を知り、そちらに移行しようとしました。

# 2. Active_Hashとは

初心者には以下の説明がわかりやすかったので引用。
> Active_Hashとは、都道府県名やカテゴリー選択などの変更されないデータをモデルファイル内に直接記述することで、データベースへ保存せずにデータを取り扱うことができるgemです。
> Active_Hashを用いることで、モデルファイルに直接記述した変更されないデータに対して、ActiveRecordのメソッドを用いることができます。

https://qiita.com/iwkmsy9618/items/60ea01f4f4285d14c597

# 3. gem の追加

Gemfileに追記したのち、“bundle install“する。

“` app/Gemfile
gem “active_hash”
“`

# 4. modelの追加

私は手動で、m

元記事を表示

Railsモデルの関連付けについて

# 背景
モデル関連付けの基礎が抜けていると実感したのでChatGPTと壁打ちしながら復習しました!
備忘録という目的も兼ねて残してまとめます。

# 当方の執筆前のレベル感
外部キー制約とは?
ポリモーフィック?横文字ワカラナイ….

Railsエンジニア1年目とはいえひどい状態

## 1対多

例)1人のユーザーが複数のコメントをする関係

“`
rails g model User name:string
rails g model Comment content:text user:references
“`
referencesオプションである、`user:references`を付けることでcommentsテーブルに外部キー制約である`foreign_key: true`を追加され、commentsテーブルにはUserのレコードidと紐付く`user_id`のカラムが追加される

“`rb
# 各モデルファイル

class User < ApplicationRecord has_many :comments # userは複数の投稿を持つ end cla

元記事を表示

Ruby環境不要のRailsアプリジェネレータ rails-new

Railsプロジェクトを新規に作ろうと思った時、OSアップデートとかの影響で環境構築につまづいちゃうみたいなこと経験ありませんかね (Railsに限った話ではないんだけど)

そんなときに役立つのが、わりかし最近リリースされた`rails-new`ジェネレータです。

https://x.com/robzolkos/status/1842615591812690328

## `rails-new`とは?

[`rails-new`](https://github.com/rails/rails-new)はrust製のRailsアプリの雛形ジェネレータです。

このツールの最大の特徴は、ローカルマシンにRubyやRailsの環境がなくても、簡単に新しいRailsプロジェクトの雛形を作成できることです。

[リリースページ](https://github.com/rails/rails-new/releases)からバイナリをダウンロードして、パスの通ったディレクトリに配置するだけで `rails-new` コマンドが使用可能になります。

## 基本的な使い方

`rails-new

元記事を表示

【Ruby】学習内容まとめ①

Stringについて学んだことを整理しました。

Stringに使用するメソッド一覧

**upcase**
…小文字の文字列を大文字にする
<使用例>

test = 'test'
test.upcase
    =>TEST

—————————-
**downcase**
…大文字の文字列を小文字にする
<使用例>

test = 'TEST'
test.downcase
    =>test

—————————-
**slice**
…文字の切り分けを行う
<使用例>

test = 'あいうえお'
 test.slice(1,2)
  => "いう"

—————————-
**size**
…文字の大きさを確認する
<使用例>

test = 'あいうえお'
 test.size
  => "5"

—————————-
**to_i**
…文

元記事を表示

Redisの挙動を実験

# はじめに
RailsでRedisを使うために挙動を確認しました。
Railsで使ってはいるのですが、薄めのラッパー関数でRedisのコマンドをほぼそのまま呼び出すだけなので、Redisに直接実行してるのと変わらないかと思います。

Redisはdockerで動かしています。

#### バージョン
– Redis: v7.2
– Rails: v7.0
– redis-client(gem): v0.22.2

# 初期化
initializerでredisインスタンスを作ります。

“`ruby
redis_config = RedisClient.config(host: “redis”, port: 6379, db: 1)
REDIS_DATA_STORE = redis_config.new_pool(timeout: 3, size: Integer(ENV.fetch(“RAILS_MAX_THREADS”, 5)))
“`

# 基本構文

“`shell
pry(main)> REDIS_DATA_STORE.call(“SET”, “id1”, “some

元記事を表示

【Rails】Rspecでテストを行う際に使ったメソッドまとめてみた

こんにちは!
今回は、実際にRspecでテストをする上で使ったメソッドをまとめてみました。

### 1, “` describe “`
テストのグループ化に使用され、テスト対象となるクラスやメソッドの説明を行う。
“`php
describe ‘User’ do
# Userクラスに関するテスト
end
“`

### 2, “` context “`
条件によるグループ化を行う。
“`php
context ‘when user is an test’ do
# ユーザーがテストの場合
end
“`

### 3, “` it “`
具体的なテストケースを記述し,期待する結果をexpectを使って定義。
“`php
it ‘returns the correct name’ do
expect(user.name).to eq(‘Yamada’)
end

“`

### 4, “` expect “`
テストで期待する結果を定義するために使用。
メソッドやオブジェクトの動作が期待通りであるかどうかを確認
“`php
expect(user

元記事を表示

【Ruby on Rails vs Supabase】: 比較しながら学ぶ Supabase CLI

## はじめに

Supabase CLIを学びたいけれど、どこから始めればいいか迷っていませんか?

本記事では、RailsとSupabase CLIを比較しながら、効率的な学習方法を紹介します。
既存のRails知識を活かして、Supabase CLIの基本をスムーズに習得できるよう構成しています。
Railsとの類似点や相違点を明確にしながら、Supabase CLIの特徴と使い方を解説していきます。

Rails開発者の視点から、Supabase CLIをマスターしましょう!

## 目次

1. [Supabaseとは?](#supabaseとは)
2. [Supabase CLIの概要](#supabase-cliの概要)
3. [環境構築の詳細比較](#環境構築の詳細比較)
– [Ruby on Railsの環境構築](#ruby-on-railsの環境構築)
– [Supabase CLIの環境構築](#supabase-cliの環境構築)
– [環境構築の比較表](#環境構築の比較表)
4. [プロジェクトのセットアップ手順](#プロジェクトのセッ

元記事を表示

cookieに有効期限をつける

# sessionとは何か?
https://qiita.com/masatom86650860/items/3ad9a98a990aea4434d0

# 有効期限をつけてみる
>3.5.15 ActionDispatch::Session::CookieStore
セッションをcookieに保存する役割を担います。config.session_storeの値を変更すると別のミドルウェアを使えます。

https://railsguides.jp/configuring.html#rack-methodoverride:~:text=3.5.15%20ActionDispatch%3A%3ASession,%E4%BD%BF%E3%81%88%E3%81%BE%E3%81%99%E3%80%82

>Because CookieStore extends Rack::Session::Abstract::Persisted, many of the options described there can be used to customize the session cookie

元記事を表示

sessionとは

# sessionとは
>Railsアプリケーションは、`ユーザーごとにセッションを設定`します。前のリクエストの情報を次のリクエストでも利用するために`セッションに少量のデータが保存`されます。セッションは`コントローラとビューでのみ利用`できます。

https://railsguides.jp/action_controller_overview.html#%E3%82%BB%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3:~:text=Rails%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AF%E3%80%81%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%81%94%E3%81%A8%E3%81%AB%E3%82%BB%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%97%E3%81%BE%E3%81%99%E3%80%

元記事を表示

cookiestoreとは

# デフォルトのセッションストレージ
>RailsはデフォルトのセッションストレージとしてActionDispatch::Session::CookieStoreを用います。

https://railsguides.jp/security.html#cookiestore%E3%82%BB%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AB%E5%AF%BE%E3%81%99%E3%82%8B%E3%83%AA%E3%83%97%E3%83%AC%E3%82%A4%E6%94%BB%E6%92%83:~:text=Rails%E3%81%AF%E3%83%87%E3%83%95%E3%82%A9%E3%83%AB%E3%83%88%E3%81%AE%E3%82%BB%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%B9%E3%83%88%E3%83%AC%E3%83%BC%E3%82%B8%E3%81%A8%E3%81%97%E3%81%A6ActionDispatch%3A%3ASession%3A%3ACo

元記事を表示

cookiestoreの暗号化

# cookieの暗号化
>CookieStoreは、`セッションデータの保管場所を暗号化して安全にするためにencrypted cookie jarを利用`します。これにより、cookieベースのセッションの内容の`一貫性と機密性`を同時に保ちます。暗号化鍵は、signed cookieに用いられる検証鍵と同様に、`secret_key_base設定値から導出`されます。

https://railsguides.jp/security.html#:~:text=CookieStore%E3%81%AF%E3%80%81%E3%82%BB%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E4%BF%9D%E7%AE%A1%E5%A0%B4%E6%89%80%E3%82%92%E6%9A%97%E5%8F%B7%E5%8C%96%E3%81%97%E3%81%A6%E5%AE%89%E5%85%A8%E3%81%AB%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E

元記事を表示

rails gのgってなんだ?

railsを学び始めて約2週間。
環境構築に手間取りましたがようやくrailsを活用しているぞと
思える段階に入りました。

教材を見つつ学んでいるのですが、何度も登場するけどいまいちわかってない
コマンドがありました。

それが「rails g ~」です。
何度も登場する癖に何のことかさっぱりわかってないまま進めてました。
何のことかわかってないから、「rails a~」って入力してエラーとか出ちゃうし。

もしかしたら教材のどこかに「rails gのgとは~」とか書いてあったかもしれませんが、
私の目は節穴なので見落としてる可能性大です。

そこでちゃんと調べました。

「rails g」の「g」は「gerenate(生成する)」の「g」でした!!
言われてみれば確かに何かを新規作成するときに「rails g~」って入れてたなぁ・・・

他にも、
・「rails d」(削除するよ)のdは「delete(削除)」のdだし、
・「rails s」(サーバーを起動するよ)のsは「server(サーバー)」のだし、
言われてみれば確かにそんな感じの動きをしてたわー!!と気づいたのでした。

元記事を表示

【PHPからRuby学習】nilってnullと違うんですか?と思ったので備忘録

PHP4年生からRubyを学び始めた初心者です。

PHPと似ているところがあるよ〜ってインターネットで見たので学んでみるか(^o^)
という安易な気持ちで学び始めたが、なんかちょこちょこ違うぞ…となっている。

今回はnilについて学んだのでメモとしてアウトプット。

## 結論
nullと同じか?と思って調べてみた

**ほぼ同じっぽい。**
でも、nilはNilClassというクラスのオブジェクトらしい。
Rubyではすべての値をオブジェクトとしているからnilもオブジェクトになる。

オブジェクトが所属しているクラスのメソッドでnil判定ができる。

### 判定できるメソッドについて
### `nil?`
対象のオブジェクトが`nil`だったらtrueを返す。
それ以外であればfalseを返す。

### `empty?`
対象のオブジェクトが空文字と空配列の時にtrueを返す。
値が存在している場合はfalseを返す。

また、nilで使用するとエラーが発生する。(NoMethodError)

“`

nil.empty? => undefined met

元記事を表示

[備忘録]RailsでWebAPIをつくるときに抑えておくとよさそうなこと

転職をして、Railsを触り始めました。

慣れるまでに時間はかかりそうですが、慣れるとスピーディに機能追加できそうでいいなと思いました。

業務では今WebAPIを触ることがメインで、それに関することをざっくりとまとめました。

どの処理のときに何を使えばいいかをまとめています。

* リクエストを受け取れるようにする→ルーティング
* https://railsguides.jp/routing.html
* リクエストを受け付けるとき
* リクエストを受け付けたときの全体の処理の流れを定義する→Controller
* https://railsguides.jp/action_controller_overview.html
* リクエストパラメータで許可したものだけ受け付けるようにする→Strong Parameters
* https://railsguides.jp/action_controller_overview.html#strong-parameters
* リクエストを一度格納する→Active Model(フォームオブジェクト

元記事を表示

【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

元記事を表示

OTHERカテゴリの最新記事