आप after_rollback कॉलबैक का उपयोग कर सकते हैं।
एक मॉड्यूल RollbackLogger बुलाया बनाएँ और अपने एप्लिकेशन/चिंताओं निर्देशिका के अंदर यह जगह
module RollbackLogger
extend ActiveSupport::Concern
included do
after_rollback :log_status, on: [:create, :update]
end
def log_status
Rails.logger.info "Rollback caused by: #{self.errors.full_messages}"
end
end
तो हर ActiveRecord मॉडल में इस मॉड्यूल में शामिल हैं:
class Foo < ActiveRecord::Base
include RollbackLogger
end
संपादित करें:
Mr. Damien Roche के रूप में पता चलता है , आप config/initializers
निर्देशिका के अंदर एक नई फ़ाइल बना सकते हैं और निम्न पंक्ति जोड़ सकते हैं:
ActiveRecord::Base.send(:include, RollbackLogger)
सभी मॉडलों में स्वचालित रूप से RollbackLogger
मॉड्यूल शामिल होगा।
स्रोत
2013-10-25 20:09:55
मैं रेल के लिए काफी नया हूं, मैं इसे सभी मॉडलों में एक गैर-घुसपैठ तरीके से कैसे करूँगा? –
मेरा अद्यतन उत्तर देखें। उम्मीद है कि यह काफी साफ है। –
@ क्रिसिसडेट यहां देखें: http://stackoverflow.com/questions/2328984/rails-extending-activerecordbase। चिंता के साथ, आप प्रत्येक मॉडल में शामिल करने के लिए 'ActiveRecord :: Base.send (: शामिल, रोलबैक लॉगर)' कर सकते हैं। –