acts_as_paranoidを抽象クラスに適用すると検索に失敗する
抽象クラスを継承してクラスを作る。継承元の抽象クラスにacts_as_paranoidを適用する。
class Hoge < ActiveRecord::Base
self.abstract_class = true
acts_as_paranoid
...
end
class Piyo < Hoge
...
def self.search
where(...)
end
end
こんな感じの実装で検索を行うとsearchメソッドの実行でエラーとなる。
ActiveRecord::StatementInvalid:
SQLite3::SQLException: no such column: .deleted_at: SELECT "piyos".* FROM "piyos" WHERE (""."deleted_at" IS NULL) AND ....
テーブル名がうまく解決できてない感じ。 acts_as_paranoidが対応出来ていないだけだと思い、継承先のクラスでacts_as_paranoidするようにした。
class Hoge < ActiveRecord::Base
self.abstract_class = true
...
end
class Piyo < Hoge
acts_as_paranoid
...
def self.search
where(...)
end
end
参考 : https://github.com/goncalossilva/acts_as_paranoid/issues/21