我想在我的应用程序中应用逻辑删除(而不是永久删除已标记为已删除的记录)。我已将可用列添加到默认值为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.
参考Rails 扩展 ActiveRecord::Base,我决定使用猴子补丁来做上面的事情。在 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:in class_of_active_record_descendant': undefined method
abstract_class?对于对象:类(NoMethodError)