Rails
RailsのActiveRecordにて、SQLのJOIN句やWHERE句の条件を記載する場合、 JOIN句 joins() や eager_load() などのメソッド 13 テーブルを結合する | Active Record クエリインターフェイス - Railsガイド WHERE句 where() メソッド 3. 条件 | Active Record …
Rails + RSpec + factory_bot にて、あるモデルの関連データを生成する方法を調べたところ、factory_botのGETTING_STARTEDにいろいろな方法が記載されていました。 https://github.com/thoughtbot/factory_bot/blob/main/GETTING_STARTED.md そこで、GETTING…
Railsを使ったソースコードを眺めていたところ、モデルのメソッドにて def foo !!bar&.baz end というコードがありました。 どのような挙動になるのか気になったので、試してみた時のメモを残します。 目次 環境 モデル構造 挙動確認 否定(!)や二重否定(!!)…
RailsでActiveRecordを使ってDBからレコードを取得するときに、以下を考慮した昇順・降順ソートで迷ったことがあったため、メモを残します。 取得するタイミング データ取得時 (SQL発行時にソート) データ取得後 (Rubyのarrayになってからソート) ソートキー…
以前、RailsのActiveRecordにて、 eager_load を使って 子側が存在しない場合は結果に含めずに抽出する 子側が存在しなくても、結果に含めて抽出する をしました。 Railsで、eager_loadのLEFT OUTER JOINにて、WHERE句とON句のそれぞれで絞り込みしてみた - …
Railsでは、標準で用意されているモデルのバリデーションの他に、カスタムバリデーションメソッドを作成することで、独自のバリデーションを行えます。 6 カスタムバリデーションを実行する | Active Record バリデーション - Railsガイド そんな中、「カス…
Railsにはタイムスタンプカラム( created_at / updated_at )があり、各カラムは データ作成時 created_at と updated_at が設定される データ更新時 updated_at が更新される という挙動になります。 2.2 スキーマのルール | Active Record の基礎 - Railsガ…
Rails + ロールでの認可制御を調べたところ、以下のページに認可制御のgemがまとまっていました。 Category: User Authorization - The Ruby Toolbox まずは一番Githubのstarが多いgemからみてみようということで、 Pundit をさわってみることにしました。 v…
Rails + React + OpenAPI な環境で、クエリパラメータに配列を指定することがありました。 ただ、実装するまでにいろいろ調べたことがあったため、メモを残します。 目次 環境 わかったこと Railsでは ids=1&ids=2 な書式のクエリパラメータを受け取れる Ope…
Rails + Active Job + Delayed::Jobな構成でジョブを作ってみた時に、色々調べたためメモを残します。 なお、記事が長いため、途中のソースコードは説明使う部分以外を省略しています。 必要に応じて、実際のソースコードを Github リポジトリでご確認くださ…
Railsのモデルで「(いわゆる)マスタを作るほどでもないけど数値に名前をつけたい」という時に、 ActiveRecord::Enum (enum) が使えます。 ActiveRecord::Enum enum については、以下をはじめ、詳しく解説している記事がすでに存在します。 Railsのenumを使い…
Railsのコントローラにてリダイレクトをしたい時は redirect_to が使えます。 2.3 redirect_toを使う | レイアウトとレンダリング - Railsガイド 以下の例では、コントローラの show() へルーティングされた時に after_redirect_erb_fruits_path へとリダイ…
Rubyでメモ化したい時、 ||= を使って書くことがあります *1。 以下のコードであれば、クラスメソッド twitter を使って、クラスインスタンス変数 @twitter に Api::External::Twitter.new のインスタンスを設定・メモ化しています。 class Api::External::C…
JetBrainsの資料にある通り、RubyMineではRailsに加えてReactもデバッグできます。 Debug a React application - React | RubyMine Debugging React Apps Created With Create React App in WebStorm | The WebStorm Blog Reactのデバッグについては、公式…
OpenAPIスキーマのあるRails製APIサーバにて、テストコードを Committee + Committer::Rails で書いていたところ、 TypeError: no implicit conversion of String into Integer というエラーが出ました。 エラーを解消するまでに少々悩んだため、メモを残し…
OpenAPIスキーマで enum を使うと、その項目が取り得る値を指定できます。 Enums - DataModels (Schemas) - OpenAPI Guide - swagger 例えば、以下のOpenAPIスキーマのようにレスポンスの型が定義されているAPIの場合、HTTPレスポンスボディの shop が取り得…
Rails製のAPIに curl -X POST 'http://localhost:3000/wrap_parameter/outputs' -H "Content-Type: application/json" -d '{"name":"foo", "age": 20}' なリクエストを投げたところ、ログに Started POST "/wrap_parameter/outputs" for 127.0.0.1 at 2022-0…
DB上のテーブル間に外部キー制約があり、「親を消したら、親に関係する子も削除する」みたいな処理を行いたいとします。 この場合、テーブルの外部キー定義で ON DELETE を指定することで対応できます。 SQLite 4.3. ON DELETE and ON UPDATE Actions | SQLi…
Railsで eager_load を使う中で、 eager_load についてもうちょっと理解を深めたいと思いました。 eager_load についてはWeb上にいろいろな記事はあるものの、自分の理解を深めるためにためしたときのメモを残します。 今回は eager_load のLEFT JOINにて、W…
自分の環境だけかもしれませんが、RubyMine 2021.3.3で debug gem を含む Rails 6.1 アプリがデバッグできなかったため、回避策を実施したときのメモを残します。 目次 環境 再現の流れ Railsとdebug gem の準備 Railsアプリの作成 通常起動で動作確認 デバ…
Railsにてモデルの関連付けを行おうとしたとき、色々と機能があることに気づきました。 Active Record の関連付け - Railsガイド Active Record マイグレーション - Railsガイド そこで、まずはモデルの関連付けの基本およびNOT NULL制約まわりをさわってみ…
Rubyの OmniAuth gemの用途としてREADMEには OmniAuth is a library that standardizes multi-provider authentication for web applications. It was created to be powerful, flexible, and do as little as possible. Any developer can create strategie…
Rails + OpenAPI で作られているAPIのテストコードを書く時、 interagent/committee: A collection of Rack middleware to support JSON Schema. willnet/committee-rails: rails and committee are good friends を使うことで、OpenAPIスキーマのテストもし…
先日、Rubyのセキュリティリリースが出ていました。 Ruby 3.0.3 Released そのため、Rubyのバージョンを 3.0.3 に上げたところ、Rails や RSpec が起動しなくなったため、対応した時のメモを残します。 環境 Ruby 3.0.3 Rails 6.1.4.1 bootsnap 1.9.1 エラー…
外部サイトへのアクセスが発生する、 Railsアプリがあるとします。 このRailsアプリに対するテストコードでは、外部サイトへのアクセスが発生しないよう、 WebMock を使うのが便利です。 bblimke/webmock: Library for stubbing and setting expectations on…
RailsでWebpacker以外の方法で React のSPAアプリが作れないかを調べたところ、 vite_rails がありました。 Rails Integration | Vite Ruby webpackやRailsのWebpackerに詳しくないため、React と Rails と Vite.js を組み合わせてSPAが作れそうなのは魅力的…
2021/08/26 00:42 追記 ご指摘いただいた内容に合わせ、記事を修正しました。 主な修正点は以下の通りです。 タイトルをOAuth2.0な文脈へ変更 環境に Resource Server を追加し、Resource Serverの中で Authorization Server の Introspection エンドポイン…
Railsとdoorkeeper-openid_connectやOmniAuth を使って、OpenID Connectの OpenID Provider と Relying Party を作ってみた
OAuth2やOpenID Connectの理解を深めようと思い、 OAuth徹底入門 セキュアな認可システムを適用するための原則と実践(Justin Richer Antonio Sanso 須田 智之 Authlete, Inc.)|翔泳社の本 Auth屋さんの書籍 【電子版】雰囲気でOAuth2.0を使っているエンジ…
RailsのAction Mailerには callback 3 Action Mailer Callbacks | Action Mailer Basics — Ruby on Rails Guides interceptor 7.1 Intercepting Emails | Action Mailer Basics — Ruby on Rails Guides observer 7.2 Observing Emails | Action Mailer Basic…
Active AdminのControllerに手を加えた際、テストコードがほしくなりました。 Wikiを見たところ、controller specでの実装でした。 Testing your ActiveAdmin controllers with RSpec · activeadmin/activeadmin Wiki ただ、現在では controller spec よりも…