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

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

Railsで親レコードの際にアソシエーション先の子レードが削除できない場合には削除されないようにする

[株式会社TECH LUCK](https://techluck.co.jp/?utm_source=qiita&utm_medium=article&utm_campaign=myarticle)という会社で代表兼エンジニアをしている齊藤です。

DXプロジェクト、開発プロジェクト、Rails開発などでお困りごとがありましたら[弊社HP](https://techluck.co.jp/?utm_source=qiita&utm_medium=article&utm_campaign=myarticle)からご相談をいただけますと幸いです。
以下のような問題を解決することができます。
– プロジェクトでRailsエンジニアが足りなくて困っている
– Railsのバージョンアップをしたいがノウハウ・リソースが足りなくて困っている
– オフショア開発をしているが、要件の齟齬やコード品質が悪いので改善したい

また、Railsエンジニアも募集しておりますので、興味がありましたら[弊社HP](https://techluck.co.jp/?utm_source=qiita&utm_medium

元記事を表示

Railsで親テーブル(親レコード)に対して子テーブル(子レコード)から複数の紐付きをする際のアソシエーション設定

[株式会社TECH LUCK](https://techluck.co.jp/?utm_source=qiita&utm_medium=article&utm_campaign=myarticle)という会社で代表兼エンジニアをしている齊藤です。

DXプロジェクト、開発プロジェクト、Rails開発などでお困りごとがありましたら[弊社HP](https://techluck.co.jp/?utm_source=qiita&utm_medium=article&utm_campaign=myarticle)からご相談をいただけますと幸いです。
以下のような問題を解決することができます。
– プロジェクトでRailsエンジニアが足りなくて困っている
– Railsのバージョンアップをしたいがノウハウ・リソースが足りなくて困っている
– オフショア開発をしているが、要件の齟齬やコード品質が悪いので改善したい

また、Railsエンジニアも募集しておりますので、興味がありましたら[弊社HP](https://techluck.co.jp/?utm_source=qiita&utm_medium

元記事を表示

flutterでandroidの実機デバッグをする方法

## ペア設定

`adb pair 192.xxx.xxx.xxx:34326`

## コネクト
`adb connect 192.xxx.xxx.xxx:43739`

## バックエンドとつなげない場合

バックエンドはrailsでlocalhost:3000起動中
実機デバイスからアクセスできない問題が発生

この時

`adb reverse tcp:3000 tcp:3000`
を行う

#### 参考

https://qiita.com/suruseas/items/42d5d9c5beffa6ebdd78

元記事を表示

CSRF対策:SPAとMPAでの対策方法について

# CSRF対策とは?

CSRF(Cross-Site Request Forgery)対策は、悪意あるサイトやスクリプトがユーザーになりすまして不正なリクエストをサーバーに送る攻撃を防ぐための仕組みです。簡単に言うと、「**ユーザー本人しかできない操作**」と「**不正なリクエスト**」を区別する仕組みを導入することです。

### CSRF攻撃が発生する仕組み
1. ユーザーがログイン中の状態で、悪意のあるサイトやメールに誘導される。
2. 悪意のあるサイトに埋め込まれたスクリプトが、ログイン状態のセッションを利用してサーバーに不正なリクエストを送信する。
3. サーバーはリクエストが正当かどうかを確認せず、そのリクエストに従ってしまう。
– 例えば、ユーザー本人が意図していないお金の送金や情報の変更など。

### CSRF対策の基本的な仕組み
CSRF対策として、**CSRFトークン**を使うのが一般的です。CSRFトークンとは、「このリクエストはユーザー本人から来ていることを確認するための特別なパスワードのようなもの」です。

#### CSRFトークンの流れ
1.

元記事を表示

今さら聞けない、gemとBundlerの基本と使い方

# はじめに

今回は、Rubyに関する gem、Railsについて簡単に復習した後、bundlerについて説明していきます。というのも環境構築の際、“`bundle install“`に何度もお世話になり、何をしてくれているのか気になったのがきっかけです。
環境構築時やgemを追加する度に何をしているのか曖昧なままなのは気持ちが悪いので今回まとめてみました。

gemやRailsに関しては、基礎過ぎて振り返ることがないかもしれませんが、意外と「知ってそうで知らなかったこと」もあるかと思います。

内容に不備あれば、ご指摘いただけると幸いです。

# 目次
– [gem](#gem)
– [Rails](#rails)
– [bundler](#bundler)

## gem

**gemとはRubyのライブラリのこと**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3924509/4049bb25-055a-f348-6d4f-1df185005834.png)

gem

元記事を表示

アプリの機能に悩むあなたに

個人開発でアプリを作成するときに基本意識するのはCRUD
ここに関しては多くの人が認識済みかもしれませんが、

個人開発でアプリ作成時の機能に関して、
**「自分の得意分野から」攻めたほうが良い**と考えます
同時に
**相手の得意分野は避けたほうがいい**と考えます

何言っているかわからないかもしれませんが、
以前テレビで見てたあたしンちのエピソードにヒントがあります

あなたが開発するアプリをプレゼントと例えてみてください

それは「相手によろこんでもらえるかどうか分からない」という不安にもなります

コーヒー好きな人に下手なコーヒー贈ると、
**ああこれね**
その人のほうが、あなたより舌が肥えていたらそのような反応が返ってくるリスクがあります

同じように、ついアプリ作成時に高度な技術を付けないとで加点法形式で「あの人は、○○が好きだから」という根拠を求めてしまいます

少なくとも「あの人はきっとLINEが好きだから」でプラス1点(だからLINE通知を実装しました)
少なくとも「みんな、おすすめを求めている」でプラス1点(だからレコメンドを実装しました)

そのプラスが、なん

元記事を表示

【個人メモ】Ruby on Rails チュートリアル 第11章

Ruby on Railsチュートリアルで学んだ内容を個人的なメモとして簡単にまとめたものです

# 個人メモ
– before_createコールバック
オブジェクトが作成されたときに呼び出されるコールバック
– メソッド参照
指定したメソッドを探索して実行を行うようにする記述法
ex) before_create :create_activation_digest
– メーラー
Usersコントローラのcreateアクションで有効化リンクをメール送信するために用いる
rails g コマンドで生成でき、テキストメール用のviewテンプレート、HTMLメール用のviewテンプレートが生成される
メールのテンプレートをビューと同じ要領で定義できる
– クエリパラメータ
URLの末尾で疑問符「?」に続けてキーと値のペアを記述したもの
– Time.zone.now
Railsの組み込みヘルパー
サーバーのタイムゾーンに応じたタイムスタンプを返す
– メタプログラミング
「プログラムでプログラムを作成する」
– sendメソッド
sendメソッドの引数によって、渡されたオブジェクトの呼び出

元記事を表示

RSpecでActionMailerのテストでdeliver_laterがある際の対処法

[株式会社TECH LUCK](https://techluck.co.jp/?utm_source=qiita&utm_medium=article&utm_campaign=myarticle)という会社で代表兼エンジニアをしている齊藤です。

DXプロジェクト、開発プロジェクト、Rails開発などでお困りごとがありましたら[弊社HP](https://techluck.co.jp/?utm_source=qiita&utm_medium=article&utm_campaign=myarticle)からご相談をいただけますと幸いです。
以下のような問題に対応することが可能です。
– プロジェクトでRailsエンジニアが足りなくて困っている
– Railsのバージョンアップをしたいがノウハウ・リソースが足りなくて困っている
– オフショア開発をしているが、要件の齟齬やコード品質が悪いので改善したい

また、Railsエンジニアも募集しておりますので、興味がありましたら[弊社HP](https://techluck.co.jp/?utm_source=qiita&utm_medium

元記事を表示

Rails7でTailwindCSSを導入する

## 1.プロジェクトの作成
“`bash
rails new rails_tailwind -j esbuild
cd rails_tailwind
“`

## 2.Tailwind CSSとForemanのインストール
Gemの追加
“`bash
bundle add tailwindcss-rails foreman
“`

Tailwind CSSのセットアップ
“`bash
rails tailwindcss:install
“`

これにより、以下のようなファイルが自動的に生成されます:
– `app/assets/stylesheets/application.tailwind.css`
– `tailwind.config.js`

## 3.確認用ページの追加
コントローラーとビューの追加
“`bash
rails generate controller Home index
“`

これにより、以下のファイルが生成されます:
– `app/controllers/home_controller.rb`
– `app/views/home/index

元記事を表示

gem ‘sorcery’ を使ってユーザー機能を実装してみた!

gem ‘sorcery’ とは
gem ‘sorcery’ は、Railsにおける認証システムの実装を支援するライブラリ。ログイン、ログアウト、セッション管理などの基本的な認証機能を簡単に追加できる。

### 今回はそんな’sorcery’を使って、ユーザー機能の実装を行なってみよう!

# gem ‘sorcery’導入

公式に導入方法が詳しく載っているので割愛します。

[公式チュートリアル](https://github.com/Sorcery/sorcery/wiki/Simple-Password-Authentication)

# 実装概要

ゴールへ向けた大まかな実装手順を提示します。

## 今回の課題で必要なタスク

– ユーザー登録機能
– ログイン機能
– ログアウト機能
– gem ‘sorcery’を使用

### そこから明確にイメージできるものとそうでないものを区別しよう!

– イメージできるもの
– ユーザー登録
– ログイン
– ログアウト
– イメージできないもの
– gem ‘sorcery’

### ゴ

元記事を表示

Tailwind CSSでRailsのエラーメッセージをフォームの下に表示する方法

[株式会社TECH LUCK](https://techluck.co.jp/?utm_source=qiita&utm_medium=article&utm_campaign=myarticle)という会社で代表兼エンジニアをしている齊藤です。

DXプロジェクト、開発プロジェクト、Rails開発などでお困りごとがありましたら[弊社HP](https://techluck.co.jp/?utm_source=qiita&utm_medium=article&utm_campaign=myarticle)からご相談をいただけますと幸いです。
以下のようなお悩みを解決できます。
– プロジェクトでRailsエンジニアが足りなくて困っている
– Railsのバージョンアップをしたいがノウハウ・リソースが足りなくて困っている
– オフショア開発をしているが、要件の齟齬やコード品質が悪いので改善したい

また、Railsエンジニアも募集しておりますので、興味がありましたら[弊社HP](https://techluck.co.jp/?utm_source=qiita&utm_medium=art

元記事を表示

診断結果を表示させたいあなたに

こんにちは
今回は診断結果を表示するための機能を実装します
診断機能につきましては、下記にてご確認ください
https://qiita.com/jiantaiyiteng1/items/12f62f32775558e3bd0b

今回の診断機能は下記の認識で進めていきます
・設問3問のYESNO方式
・8通りの選択肢を作る

## 診断結果を見るのボタンを押しても画面遷移できないとき

1. **ルート設定について**

`resources :diagnoses`のルートは下記のように適切であるかを確認します

“`Ruby
# ルート側にdiagnoses(診断機能)を追加
# 現在のroutes.rbでは、診断機能を提供するresources :diagnosesに対してindexとshowアクションしかルートが設定されていないが
# トップページから診断フォーム(newアクション)に進む必要がある
resources :diagnoses, only: %i[index show new create]
“`

2. **フォームの送信確認**

`診断結

元記事を表示

診断機能を作りたいあなたに

こんにちは
RUNTEQにて卒業制作で診断アプリを作ってます
今回はとってもシンプルなYESNO形式で診断する機能を共有いたします
診断結果の出力は別途共有いたします
初めての公開記事で頼りないところもございますが、よろしくお願いいたします

# **ルーティングを定義**

ルート側にdiagnoses(診断機能)を追加します

現在のroutes.rbでは、診断機能を提供するresources :diagnosesに対してindexとshowアクションしかルートが設定されていないが、トップページから診断フォーム(newアクション)に進む必要があります

“`ruby
# routes.rb
Rails.application.routes.draw do
# (省略)
root “static_pages#top”
# 診断機能にて追加
resources :diagnoses, only: %i[index show new create]
end
“`

# `diagnoses#new`へのルートに変更
Railsのルーティングヘルパーで、dia

元記事を表示

RSpecで共通のテストを再利用!shared_examplesとinclude_examplesの使い方

# 1. はじめに
RSpecでテストを書いていると、似たようなテストケースが何度も出てきて「コードが重複してしまう…」と感じたことはありませんか?そんなときに便利なのが shared_examples と include_examples です。この2つを使うと、共通のテストケースを1か所にまとめて複数のテストで再利用できるようになります。
今回は、shared_examplesとinclude_examplesの使い方を紹介します!

# 2. shared_examplesとinclude_examplesとは?
shared_examples : 共通のテストケース(例)を定義するための機能。
include_examples : 定義した共通のテストケースをテストで呼び出すための機能。
この2つを使うことで、同じようなテストをいちいち書き直さずに、再利用できるようになります!
###### 基本の使い方
例えば、あるAPIが200のステータスコードでJSON形式のレスポンスを返すかを確認するテストを書いたとします。
“`
describe SomeController, t

元記事を表示

Railsでfile_fieldをいい感じに装飾する

[株式会社TECH LUCK](https://techluck.co.jp/?utm_source=qiita&utm_medium=article&utm_campaign=myarticle)という会社で代表兼エンジニアをしている齊藤です。

DXプロジェクト、開発プロジェクト、Rails開発などでお困りごとがありましたら[弊社HP](https://techluck.co.jp/?utm_source=qiita&utm_medium=article&utm_campaign=myarticle)からご相談をいただけますと幸いです。
以下のような問題に対応することが可能です。
– プロジェクトでRailsエンジニアが足りなくて困っている
– Railsのバージョンアップをしたいがノウハウ・リソースが足りなくて困っている
– オフショア開発をしているが、要件の齟齬やコード品質が悪いので改善したい

また、Railsエンジニアも募集しておりますので、興味がありましたら[弊社HP](https://techluck.co.jp/?utm_source=qiita&utm_medium

元記事を表示

文字列を特定のバイト数 (not 文字数) で切り詰める

# やりたいこと

文字列を特定のバイト数 (not 文字数) で切り詰めたいです。

# 最初に結論

Active Support コア拡張機能が提供する [String#truncate_bytes](https://railsguides.jp/active_support_core_extensions.html#truncate-bytes
) を使います。

“`rb
limit = 100 # bytes

engineers = ‘👨🏿‍💻👩🏿‍💻👩🏼‍💻👨🏻‍💻👩🏾‍💻👨‍💻👨🏼‍💻👨🏾‍💻👨🏽‍💻👩‍💻👩🏻‍💻👩🏽‍💻’
engineers.bytesize
#=> 172

truncated_engineers = engineers.truncate_bytes(limit, omission: ”)
#=> “👨🏿‍💻👩🏿‍💻👩🏼‍💻👨🏻‍💻👩🏾‍💻👨‍💻”
truncated_engineers.bytesize
#=> 86
“`

# 長い解説

## 例: 文字列を MySQL の TEXT 型に収まる範囲に切り詰めたい

とある Rails

元記事を表示

Ruby on RailsでOmniAuthを用いてgoogleとgithubの認証やり方完全入門(初心者向け)

# 新規登録やログインをgoogleやgithubのアカウントでできるようにする
### OmniAuthとは
**OmniAuth**は、OAuth認証をシンプルに扱うためのRubyライブラリで、RailsアプリケーションにSNSログイン機能を実装する際に広く利用されています。OmniAuthを使うと、GitHub、Google、Facebookなど、さまざまなプロバイダーを通じての認証が容易になります。

### OAuth認証とは
**OAuth認証**(OAuth 2.0)は、ユーザーが自分のパスワードを第三者に渡さずに、他のサービスにアクセス許可を与えるための認証プロトコルです。OAuthは、特にWebアプリケーションやモバイルアプリケーションにおいて、ユーザーが他のアプリケーションやサービスと安全にデータを共有できるようにするために使われます。

## ①googleのOAuthアプリケーションを作成する
googleのAPIを作成するにはG

元記事を表示

Rails Namespace Modelを利用した際のrelation を修正する

# Rails Namespace Modelを利用する

## TL; DR

rails7の場合に(8だと解消するPRが含まれていたchange logがあったきがするが探せてないw)、nested classの参照解決をして、利用しやすいように適宜renameする。

## 0. 環境

| name | version |
| :–: | :—: |
| rails | 7.2.1.1 |
| ruby | 3.3.5 |
| mysql | 8.4 |

## 1. 想定するModelとdatabase schema

### 1-1. Model

“`mermaid
classDiagram
class Organization {
+Int id
}
class OrganizationUser {
+Int id
}
class User {
+Int id
}
“`

“`mermaid
erDiagram
organizations {

元記事を表示

Rails Composite Primary Keysの table migration

# Rails Composite Primary Keysの table migration

## 備忘録

あんまり個人的には利用していないComposite Keyのサンプルにdatabaseの記載がすくなかったため、備忘録として記載。複合Keyあんまり使うケースがないんだよなと思いつつ。

## 0. 環境

| name | version |
| :– | :– |
| rails | 7.2.1.1 |
| mysql | 8.4 |

## 1. Model構成

[Rails Guide](https://guides.rubyonrails.org/active_record_composite_primary_keys.html#associations-between-models-with-composite-primary-keys)をベース作成します。
Bookじゃなくて、OrderItemにしましたが。

“`mermaid
classDiagram
class Order{
+Int shop_id
+Int id
+S

元記事を表示

【Rails7】deviseを使用したログイン機能の作成

Rails、Rubyを学習中の者です。
備忘録として記事を作成します。
間違っているところも多々あると思いますので、その際はコメントなどでご教授いただけますと幸いです。

### deviseとは
Railsアプリケーションにおいて、比較的簡単に認証機能を導入できるgemです。
デフォルトではメール(email)で認証を行います。
比較的簡単とはいえRailsの知識が必要ですので、初めてRailsでアプリを構築する方は先に自分で認証システムを作ってみることをお勧めします(公式のgithubでも推奨されています)。

### 環境
Windows11
Ubuntu 22.04.4 LTS
Ruby 3.1.4
Rails 7.0.8.6

### 今回の実装の目標
– deviseを用いた認証機能の構築
– ユーザーネームでログイン・認証ができるようにする

### 作業の流れ
– gemの追加
– ジェネレータのインストールと各種設定の変更
– モデルの作成
– ビューの設定
– 設定ファイルの編集

### gemの追加
“`
# Gemfile
gem “devise”, “~>

元記事を表示

OTHERカテゴリの最新記事