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

Rails関連のことを調べてみた2022年08月25日
目次

【Rails】DBの一意性について【備忘録】

本記事はRailsチュートリアル6.2.5の備忘録です。
URL:https://railstutorial.jp/chapters/modeling_users?version=5.0#sec-uniqueness_validation

内容としては、ユーザ(Userクラス)のメールアドレス(email)を一意なものとして定義し、そのテストをしていくというものです。
アプリ側(モデル)とDB側の両方で、一意性を設定することができますが、結論から言うとどちらも設定する方が良いようです。

それでは詳細に説明していきます。

アプリ側では、以下のように一意性を持たせることができます。
“`ruby:アプリ側
class User < ApplicationRecord … validates :email, presence: true, length: { maximum: 255 }, format: { with: /正規表現/ }, uniqueness: true #####追記####

元記事を表示

【Ruby】メソッドの後の感嘆符”!”について

メソッド後の感嘆符”!”をつけることで、破壊的な変更を強いることができる。

例えば、以下のコードがあったとします。
“`
self.email = self.email.downcase
“`
参考:Railsチュートリアル 第4版 6章より
https://railstutorial.jp/chapters/modeling_users?version=5.0#sec-minimum_password_standards

上記だと右辺で”self.email”を全て小文字にしてから自身に代入することで更新していますが、
以下のように書くことで、直接”self.email”の値を変更することができ、より簡潔に書けます。

“`
self.email.downcase!
“`

ただ便利な感嘆符”!”ですが、元の値を強制的に上書きするので、使いどころには注意ですね。

元記事を表示

RDS MySQLとAuth0を繋げる

こんにちは。SARAHの沈(シム)です。
最近認証基盤をRailsのdeviseからAuth0への切り替えを行う作業があり、Auth0と既存のDBを繋げる機会がありまして、
自分が学んだ内用を共有しようかと思います。

目的

RailsのDevise認証からAuth0への認証基盤を移行
DBのユーザーデータは維持する(Export/Importなし)
Auth0のOIDCを付けてAPI Gatewayを保護

システム構成図

![スクリーンショット 2022-08-23 19.48.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342115/ea27c898-b074-9776-ce9e-46ffe1b670fc.png)

RailsのDeviseからAuth0への切り替え

RailsにAuth0を導入するのは難しくないかと思います。
Auth0のSampleコードをそのまま従って実装すれば簡単にできます。
https://auth0.com/docs/quickst

元記事を表示

【Ruby】Railsでリクエストのバリデーションを行うライブラリ`rails_param`

## 概要
Railsでリクエストのバリデーションを行う場合、[Rails基礎 ストロングパラメータとバリデーション](https://hpsuzucat.hatenablog.com/entry/2020/10/24/224143)の記事にある通り、ApplicationRecordの機能を使用する方法などが挙げられます。もちろん、この方法でも全然良いのですが、ApplicationRecordのモデルに通す前に、controllerでバリデーションしたい時もあるなと感じました。
何かないかなと調べてみた結果、`rails_param`というライブラリが良さげだったので、今回少し紹介します。

## 機能など
[nicolasblanco/rails_param](https://github.com/nicolasblanco/rails_param)に、ライブラリのReadmeがあります。パラメータの、型指定や、必須チェック、最小値・最大値など基本的なチェックは出来そうです。また、項目毎にエラーのメッセージもカスタムで設定できます。

## 実装サンプル
以下はAPIで、文字列の

元記事を表示

[Rails6]グループ機能を実装する

### 前提
記事を書いている私は現役のエンジニアではなくエンジニアを目指して学習中の者です。
よって、気をつけてはいますが記述内容には誤った内容が含まれている危険性があります。
その為この記事は参考程度に読んで頂き詳しい内容は公式の記述を参考にすることをおすすめします。

### この記事で実装すること
Rails6系のPFでグループ機能を実装したのでその時の手順と詰まった箇所についてまとめました。
PFは卒業アルバムページを作成できるようになっており、そのアルバムを共有するメンバーをグループで設定しています。
よって以下のような機能を持ちます。
– アルバムに招待するメンバーを選択できる
– アルバムメンバーにだけ該当するアルバムを表示する

### 使用技術
Ruby 3.1.2
Rails 6.1.6

### 実装手順
既に以下のモデルを持つアプリを作成した前提で進めていきます。
**Userモデル**
ユーザーは複数のアルバムを持つことができます。
“`ruby:user.rb
has_many :albums, dependent: :destroy
“`
**Alb

元記事を表示

Dockerを導入しよう――Rails、Compose V2編

Railsチュートリアルのサンプルアプリを例にDockerを導入したいと思います。
今までなんとなーくで済ませてきたので公式ドキュメントをがっつり読んで理解します。
Docker公式が[Rails向けのQuickstart](https://docs.docker.com/samples/rails/)を公開しているので、その他公式のドキュメントも参考にしつつ進めていきましょう。
なお、[公式のブログ](https://www.docker.com/blog/announcing-compose-v2-general-availability/)によるとDocker Compose V1は非推奨であり2023年4月までにV2への完全な移行を予定しているとのことです。従って、特に理由がなければCompose V2を使用しましょう。

## 環境
– WSL2 / Ubuntu 22.04
– Ruby 2.6.3
– Rails 6.0.4
– Docker 20.10.17
– Docker Compose version v2.6.0

[Ruby on Rails チュートリアル(

元記事を表示

Ruby on rails JqueryとBootstrapが反映されない

今日は、RailsのTutorialsでJqueryとBootstrapをインストールした後、Dropdownの反映がされなかったので、その対処法についてまとめました。

まずは、こちらのコードを実行しました。
~~~app/javascript/packs/application.js
//= require jquery
//= require bootstrap
~~~

そして、
~~~app/assets/stylesheets/custome.scss
@import “bootstrap”;
~~~
を追加しました。
しかし、これでは動かず、、

~~~app/layouts/application.html.erb