以下の内容はhttps://ksss9.hatenablog.com/entry/2025/03/13/120358より取得しました。


paranoia gem用の型を生成する

一言で言うと

orthoses-paranoiaを作った。

背景

以下のようなARコードがあったとして、with_deletedの型が分からないので後のコードが全てuntypedになってしまう問題があった。

User.with_deleted.comments.where(...)
#  ↑ここはUser型
#               ↑ここはUser::ActiveRecord_Relation型であってほしい
#                しかし現状メソッドの定義がなくuntyped

このwith_deletedparanoiaで生えてくるメソッドで、中身は簡略化すると極単純なものだ。

def with_deleted
  unscope where: paranoia_column
end

返り値はUser::ActiveRecord_RelationだったりComment::ActiveRecord_Relationだったりと、使用するモデルによって変わる。

RBSはこういうRailsによくあるパターンが不得意だと思っていて、解決策としてorthosesを設計したのだった。

orthosesの拡張として実装することで「acts_as_paranoidが呼ばれたモデルに対して所定のメソッドを追加する」というコードを素直に書いて、paranoiaに対応できた。 orthoses-railsにがっつり依存しているが、それだけに考えることが少なくて済む。orthoses便利。




以上の内容はhttps://ksss9.hatenablog.com/entry/2025/03/13/120358より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14