私がやろうとしているのは、特定のモデルを破棄できない場合に、例外ではなくエラーを返すことです。現在、それは発生ActiveRecord::DeleteRestrictionError
しますが、それはフラッシュメッセージに返されたり、モデルのエラーコレクションに追加されたりしません。
私がやったことは、私の機知に富んだコントローラーでこれをセットアップすることです:
def destroy
begin
resource.destroy
rescue ActiveRecord::DeleteRestrictionError => e
resource.errors.add(:base, e)
end
end
この特定の動作を必要とするすべてのコントローラー内でこれを管理したくありません。どうすれば抽象化できますか?のdestroyメソッドを上書きするのは良い考えでActiveRecord::Base
はありませんが、落とし穴はないのではないでしょうか。
私はinherited_resourcesgemを使用しているので、それを拡張することでこれに答える方法があるのではないでしょうか。
私が持っていたもう1つのアイデアは、(ここから:ActiveRecord :: Baseを拡張するRailsActiveRecord::Base
)を使用して拡張し、モデルごとにdestroyメソッドをカスタムdestroyに委任することでした。考え?ActiveSupport::Concern