- 0.0.1. 【Rails / ActiveRecord】find / find_by / where の違いをざっくり理解する
- 0.0.2. プログラミングとHTMLの「class」の違いについて
- 0.0.3. 【Rails】config.load_defaultsで指定したバージョンのデフォルト設定を読み込む
- 0.0.4. Github OAuthAppでOAuth2.0を体験してみた
- 0.0.5. RailsのコントローラーとDB作成
- 0.0.6. dockerでrailsアプリを動作させるのとgitとgithubの使い方
- 0.0.7. ActiveRecord::Core の clone と dup の違い
- 0.0.8. ルーティングは極力ルーティングヘルパーを使おう
- 0.0.9. rails 都道府県をプルダウンで選択できるようにする #初心者
- 0.0.10. Railsモデルの関連付けについて
- 0.0.11. Ruby環境不要のRailsアプリジェネレータ rails-new
- 0.0.12. 【Ruby】学習内容まとめ①
- 1. Stringに使用するメソッド一覧
【Rails / ActiveRecord】find / find_by / where の違いをざっくり理解する
# はじめに
お疲れ様です!
コンソールでデータ取得する際に`find`, `find_by`, `where`をなんとなく使用しており、使い分けについて説明することができなかったので、ざっくりまとめていきたいと思います:writing_hand:![qiita_find.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117662/23df6702-8d94-0c81-4a9d-0bb49cc8b8ab.png)
先に3つの違いを一覧をまとめた上で、それぞれの特徴を書いていきます:sunglasses:
# 違いまとめ
| メソッド | 用途 | 返り値 | 条件に合わない場合 |
|————-|—————————————-|———————–|——————–
プログラミングとHTMLの「class」の違いについて
Qiitaにはマークダウン式で記入するルールというルールがあるのですね。
毎回無視していて申し訳ありません。
マークダウン式が分かっていないので、近日中に必ず学んでマークダウン式で記事を書きたいと思っているので今回は(もしかしたら次回も)この書き方で勘弁してください。Railsの勉強をしています。
練習課題に日々取り組んでいますが、その中で気になることがありました。
記述していく中で「class ~」と出てくるのですが、これってHTMLのclassと同じ意味なのか、違う意味なのか、ということです。同じ「class」なんだから同じ意味でしょ!と最初は深く考えていませんでしたが、進めるにつれて「やっぱり意味が違うのでは?」と思うようになりました。
そこで今更ながら、Ruby(プログラミング)とHTMLの「class」の意味の違いをまとめておきたいと思います。
Ruby(プログラミング)の「class」は「設計図」
HTMLの「clss」は「ラベル」という理解が自分の中ではしっくりきます。
Rubyの「class」は、「class」の中で動作が定義されていきますが、
HTM
【Rails】config.load_defaultsで指定したバージョンのデフォルト設定を読み込む
## はじめに
Railsアプリケーションのバージョンアップ作業に携わる中で、`config.load_defaults`という設定オプションについて学びました。
そこでこの記事では`config.load_defaults`の役割や使い方、バージョンアップ作業時の取り扱いについてまとめます。
対象読者は次のとおりです。
– Railsの設定まわりに興味のあるエンジニア
– 歴史のあるRailsアプリケーションに携わっている(Rails5.0以前)
– Railsのバージョンアップ前に設定ファイルをリファクタリングしたいエンジニア## `config.load_defaults`とは?
`config.load_defaults`とは、**指定したRailsバージョンのデフォルト設定を一括で読み込むための設定です。**
`config/application.rb`に記述されています。
下記はRails7.2で`rails new`した時点の`config/application.rb`です。
“`rub
Github OAuthAppでOAuth2.0を体験してみた
# 背景
OAuth2.0の仕組みを触って体験したかったので、Github OAuthAppを使って実践してみることにした。理解に間違えなどがあればご指摘いただけると幸いです。
# OAuth2.0とは?
クライアントアプリ(以降:クライアント)がユーザーが登録しているGihubのユーザー名を取得したいとする。
当然、クライアントはユーザーのGithubへのアクセス権限がない為、OAuth2.0という技術を使って解決する。
方法は、クライアントがユーザーにGithubへの認可・認証をしてもらい、Githubの認可サーバからアクセストークンを発行してもらうことで、クライアントは一時的にユーザーが認可した範囲のGithub情報へアクセスすることができるようになる。尚、OAuth2.0のフローには4つの種類があり、当記事は認可コードを使ってアクセストークンを取得するフローで検証していく。
# 前提
・Githubアカウントを持っていること
・rails new でプロジェクトが作成されていること**※当記事はOAuth2.0の体験用に最小限かつ簡易的に作ったものです。ご参考に
RailsのコントローラーとDB作成
# railsでコントローラーを作るには
“`
rails generate controller コントローラー名 アクション名1 アクション名2 …
“`
とする。
また、コントローラー名は複数系にする
アクション名は作りたいファイル名にする
例
“`
rails generate controller users index
“`
# railsでDBを作成するには
“`
rails generate model モデル カリム名:データ型
“`
モデルは先頭の文字を大文字にして単数形にする例
“`
rails generate model User name:string email:string
“`
とする。そして、データベースの変更を保存する
“`
rails db:migrate
“`
# カリムだけを追加するには
マイグレーションファイルの名前はなんでもいいが変更がわかるような名前が望ましい
“`
rails generate migration add_user_id_to_posts
“`
とコマンドを打ち込んで、マイグレーショ
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(サーバー)」のだし、
言われてみれば確かにそんな感じの動きをしてたわー!!と気づいたのでした。