寝る前にラーメン

ソフトウェアエンジニアです。絶賛デブエット中です。

Rails3で論理削除と多対多の関係を作ろうとしたら詰まった

Rails3で、以下のふたつを同時に実装しようとしたらダメだった。

  • rails3_act_as_paranoid
    テーブルにDATETIME型のdeleted_atを
    追加すると論理削除が簡単に作れるもの
  • モデル間の多対多の関係(habtm; has_and_belongs_to_many)

 どうダメかって、こんな風に怒られた。

SystemStackError (stack level too deep):

もちろん前者の rails3_act_as_paranoid を外せばうまくいく。

どうやらrails3_act_at_paranoidを使うと、

has_and_belongs_to_many :hogehoge

のところでエンドレスになっちゃう。

他の論理削除を実装する同様のgemも探してみたけど、
同じエラーを吐いたので諦めた。

素直にModelにdefault_scope書いてとりあえず蓋をした。

こういうのをforkしてひょひょいと直しちゃえる人に今年はなりたい、というかなるー