アプリケーションで論理削除を適用したいと思います (レコードを完全に削除するのではなく、削除済みとしてマークされているだけです)。デフォルト値trueですべてのテーブルに利用可能な列を追加しました。ここで、すべてのモデルに対して次のコードを書くための共通の場所が必要です。
1) Write the instance method which make 'available' column value false when user clicks on destroy link.
2) Merge the 'available=true' condition to all ActiveRecord's queries while fetching the records.
ActiveRecord::Base を拡張する参照Railsを使用して、monkey patch を使用して上記を行うことにしました。config/initializer/active_record_patch.rb に作成されたモンキー パッチ ファイル:
class ActiveRecord::Base
def inactive
update_attribute(:available, false)
end
default_scope :available => true
end
default_scope を追加すると、次のエラーが発生します
/gems/ruby-1.9.2-p290/gems/activerecord-3.0.9/lib/active_record/base.rb:1212:abstract_class class_of_active_record_descendant': undefined method
?」オブジェクト: クラス (NoMethodError) の場合