2026-01-01から1ヶ月間の記事一覧
タイトルの通りですが、Rubyでは!や+や-はメソッドとしても使えるということを知りました。 !"abc".include?("a")というコードは以下のようにも書けます。 irb(main):006> "abc".include?("a").! => false もっと純粋化すると、!trueはtrue.!と同じであると…
前提として、以下のようにscopeが定義されたTagモデルを定義します。 class Tag < ApplicationRecord has_and_belongs_to_many :restaurants scope :south_india, -> { where(name: "南インド") } end Tag.south_indiaとすると以下のSQLが発行されます。 SEL…
最近、オブジェクト指向における「委譲」の適切な使い方について考える機会があったのでマーティン・ファウラーの『リファクタリング』を読みながら勉強してみます。サンプルコードはRubyです。 www.ohmsha.co.jp サンプルコード 以下のようにNameクラスとPe…
Rubyでは基本的にAND条件とOR条件に&&と||を使います。 他方でandとorも構文ではサポートされています。従って、Python経験がある身としては、andとorを使いそうになってしまうときがあります。 ※ PythonではAND条件とOR条件にはandとorを使う note.nkmk.me …
RuboCopに怒られて知ったのですが、Rubyでは以下のようにrescue節でStandardErrorを捕捉する場合はStandardErrorを省略することができます。 修正前 def divide(m, n) begin m / n rescue StandardError => e "[ERROR] #{e.message}" end end puts divide(2,…
前提 今の案件に参画当時、Railsのローカルの開発環境でrails consoleを実行してActive RecordでのDB操作を試みたり、rails runnerでDB操作を伴うコマンドを実行したりすると以下のようなエラーが発生するという事象に遭遇しました。 ※ rails serverは正常に…
Ruby2.7でNumbered parametersという機能が導入されました。 github.com ブロックのパラメータを以下のように省略して書けるというものです。 Numbered parametersを使わない場合 [1, 2, 3].map {|n| n * 2} # [2, 4, 6] Numbered parametersを使う場合 |n|…
RailsでActiveRecordのfind_byにモデルのインスタンスを渡すとidに変換されるという仕様を発見しました。実務に役立つことはあまりなさそうですが、面白かったのでメモしておきます。 検証 まずは任意のモデルのインスタンスを取得します。 app(dev):004> o1…
RailsのActiveRecordでscopeを使う方法です。 scopeとはよく使う条件をメソッド化できるActiveRecordの機能です。 引数なしのパターン 以下のように定義します。 class Restaurant < ApplicationRecord # 省略 scope :south_india, -> { joins(:tags).where(…
東畑開人さんの『ふつうの相談』という本を読みました。 www.kongoshuppan.co.jp この本自体は臨床心理の本ですが、本に出てくる「学派知」と「現場知」という分類がエンジニアが勉強する領域について考える上でも応用できそうだったので、アイデアを拝借し…
Gitで以下の操作をした後にbranch_a上でgit logを実行した際のログが想定と違ったので、出力の意味を理解してみました。 行った操作 mainブランチからbranch_aとbranch_bを作成する ※ mainブランチ上でgit switch -c branch_aとgit switch -c branch_bを実行…