delhi09の勉強日記

技術トピック専用のブログです。自分用のメモ書きの投稿が多いです。あくまで「勉強日記」なので記事の内容は鵜呑みにしないでください。

Rails

Rails開発でのDISABLE_SPRING=trueのおまじないの意味をある程度理解する

前提 今の案件に参画当時、Railsのローカルの開発環境でrails consoleを実行してActive RecordでのDB操作を試みたり、rails runnerでDB操作を伴うコマンドを実行したりすると以下のようなエラーが発生するという事象に遭遇しました。 ※ rails serverは正常に…

RailsでActiveRecordのfind_byにモデルのインスタンスを渡すとidに変換される

RailsでActiveRecordのfind_byにモデルのインスタンスを渡すとidに変換されるという仕様を発見しました。実務に役立つことはあまりなさそうですが、面白かったのでメモしておきます。 検証 まずは任意のモデルのインスタンスを取得します。 app(dev):004> o1…

RailsのActiveRecordでscopeを使う ※ 引数あり/なしパターン

RailsのActiveRecordでscopeを使う方法です。 scopeとはよく使う条件をメソッド化できるActiveRecordの機能です。 引数なしのパターン 以下のように定義します。 class Restaurant < ApplicationRecord # 省略 scope :south_india, -> { joins(:tags).where(…

よく使うSQLの条件のActiveRecordでの書き方

本記事ではよく使うSQLの条件のActiveRecordでの書き方をまとめます AND条件で検索 コード1 結果1 コード2 結果2 OR条件で検索 コード 結果 IS NULL コード 結果 IN句 コード 結果 結合先のテーブルのwhere条件で絞り込む コード1 結果 コード2 whereの大小…

Railsのfind, find_by, whereの使い分け

Railsのfind, find_by, whereの使い分けをまとめます。 find 原則は以下の仕様です。 idで検索 1件だけ取得 (SQLにLIMIT 1がつく) app(dev):001> Tag.find(1) Tag Load (2.9ms) SELECT "tags".* FROM "tags" WHERE "tags"."id" = 1 LIMIT 1 /*application='A…

Railsアプリのデバッグ手段① ※プリント/デバッグログ

Railsアプリのデバッグ手段をまとめます。Docker Compose上でRailsアプリを動かしている場合でも使える方法です。 1.ppを使う 以下のようにppでデバッグしたい変数を出力します。結論としてはこれで十分なことが多そうです。 基本形 コード class TagsContro…

Railsでリクエストパス変数がわからなくなったらrails routesコマンドで確認できる

Railsではformのアクションを指定する場合などにリクエストパスをベタ書きすることは少なく、xxx_pathのような自動で定義されている変数を使います。 変数名には法則があるのですが、慣れないうちはわからなくなることが多いです。 その場合はrails routeコ…

Rails開発最初の1ヶ月で使ったRubyの配列メソッド

Rubyは高機能な配列関数が多くてどこまで覚えるか悩ましいですが、とりあえず1ヶ月Railsで開発して使ったものは今後もよく使うだろうということでメモしておきます。 map 配列の各要素に対して何らかの処理をした結果の新しい配列がほしい場合に使うメソッド…

Railsでローカルでは動作するコードがHerokuデプロイ後にエラーになる場合はHerokuを再起動するとなおる場合がある

結論 Railsでローカルでは動作するコードがHerokuデプロイ後にエラーになる場合は、以下のコマンドでHeokruを再起動すると解消する場合がある。 heroku restart 事象 RailsでのWEBアプリを開発で以下の改修をした。 TagモデルにTagGroupモデルへの関連を追加…

DjangoユーザーがRails入門してみて感じた違い

はじめに 私は仕事で3年以上Djangoを使っているが、副業でRailsを使う機会があった。同じそれぞれの言語を代表するフルスタックフレームワークだからそんなに違わないと思っていたらけっこう違ったので、感じた違いをメモしておきたい。 目次 フロントエン…