laravelでArdentを使うと便利、が・・

laravel - Model で Validation したい? それならば Ardent だ! - Qiita

こういう記事を読んだり、削除する前のvalidationをcontrollerに書きまくるのが嫌だったのでhookを削除前のvalidationもsaveの時と同じように簡単にやりたいなぁなどと思っていて、Ardentのhookが便利そうと思ってちょっと試していた。

しばらく試している分にはArdentのREADMEにある通りとても便利に使わせていただいていたんだけど、論理削除の確認をしていたらどうもおかしい。何度でも削除できてしまう。

laravelのsoft deleteでググりまくっても特に問題は出てこない。大体は4.2のバージョンアップで書き方が変わってしまったので動かなくなっていた的な話。

おかしいなーと思ってふと、Ardentのせいか!と思い立って調べるとやはりその様子

Laravel 4.2 soft delete doesn't work with Ardent · Issue #211 · laravelbook/ardent · GitHub

中にはArdentはもう死んだ、忘れようなんてコメントもあるようで、どうやら4.2のバージョンアップでだいぶおかしくなってしまっている様子。

soft deleteにscopeが使われるようになったのが4.2からなのかな?(4.2から使い始めたので知らない)

自分でも原因を調べていたらscopeでwhereを追加しているはずなのにそこが呼ばれていないのがおかしいなというところまではわかっていて、修正パッチを確認するとapplyGlobalScopesを呼ぶようにしている。

このscope周りでrelation関係にも問題がでているようだが、一向に改善されないのでもうだめだな。と思われているようだし、まぁこんな感じだと使ってはダメそうだなーと。

残念。