2016-09-01 14 views
0

私はモデル国を持っているので、国のテーブルを持っています。 countryテーブルはisoの国と通貨コードのコレクションとして機能し、(シードデータで埋めた後で)コンテンツを決して減らすべきではありません。 CountryはActiveRecord :: Baseのサブクラスであるため、レコードを削除するdestroy、delete_allなどのクラスメソッドを継承します。私は、モデルレベルでレコードの削除を防ぐための解決策を探しています。Rails:レコードの削除を防ぐには?

c。私は、このメソッドをオーバーライドすることによってこの問題を解決するオブジェクト指向のアプローチを利用できることを知っています(呼び出し時にエラーを発生させます)が、これは基本クラスのすべての継承メソッドを知る必要があることを前提としています。誰かがより洗練されたソリューションを提供できるなら、私はうれしいでしょう。

+0

これを行うことについて、この記事会談:使用しているデータベースhttps://www.tigraine.at/2012/02/03/removing-delete-and-destroy-in-rails-models – Swards

+0

? – siegy22

+0

@RaVeN postgres – BobMcgregor

答えて

1

before_destroyコールバックがあります。おそらくそれを利用することができます。

before_destroy :stop_destroy 

def stop_destroy 
    self.errors[:base] << "Countries cannot be deleted" 
    return false 
end 
+0

「削除」が使用されている場合は、トリガーされません。破壊するときだけ。 – siegy22

+0

合意これは完全な答えではありません。 – Swards

+0

try before_destroy:stop_destroy、prepend:true –

関連する問題