मैं वर्तमान में अपने रेल आवेदन के प्रशासन अनुभाग के लिए एक लॉग लागू करने की कोशिश कर रहा हूं। यह व्यवस्थापक को यह देखने की अनुमति देगा कि उपयोगकर्ता ने कौन सी कार्रवाइयां की हैं और कब। E.g 'उपयोगकर्ता ने एक नया पता जोड़ा', 'उपयोगकर्ता ने अपने पोस्टकोड को एक्स से वाई में अपडेट किया'।रेल में उपयोगकर्ता घटनाओं का लॉग रखें
चूंकि प्रत्येक कार्रवाई में संभावित रूप से उपयोगकर्ता नहीं बल्कि कई मॉडल शामिल हो सकते हैं, मैंने एक लॉग मॉडल बनाया है जिसमें अन्य सभी सिस्टम मॉडल आईडी, एक संदेश और लॉग कोड के लिए फ़ील्ड हैं।
class CreateLogs < ActiveRecord::Migration
def self.up
create_table :logs do |t|
t.integer :user_id
t.integer :marker_id
t.integer :administrator_id
t.integer :group_id
t.integer :assignment_id
t.integer :submission_id
t.integer :code
t.text :message
t.timestamps
end
end
def self.down
drop_table :logs
end
end
मेरी चिंता का विषय है कि उदाहरण के लिए, यदि कोई उपयोगकर्ता (मान लें) कर सकता है उनके खाते में एक काम को जोड़ने है, यह
Log.create(:user_id => current_user.id, :assignment_id => the_assignment.id, :code => 342, :message => '')
(कहीं कोड 342 'के लिए उपयोगकर्ता एक बनाया मेल खाती है के रूप में लॉग होता है नया पता ', इसलिए संदेश की कोई आवश्यकता नहीं है)
स्पष्ट रूप से लॉग व्यू में, मैं प्रासंगिक उपयोगकर्ता और पता जानकारी लॉग आईडी/विवरण से खींच सकता हूं लेकिन यदि यह उपयोगकर्ता या पता हटा दिया गया था, तो वह सारी जानकारी होगी अनुपलब्ध हो और लॉग के माध्यम से वापस देख रहे हैं, प्रविष्टि मूलभूत होगा वाई बेकार
इस तरह के लॉग सिस्टम घटनाओं में मदद करने और संभावित हटाने से निपटने के लिए पहले से ही एक बेहतर तरीका या कुछ बाहर होना चाहिए।
वैकल्पिक रूप से मैं पूरी प्रविष्टि को एक टेक्स्ट संदेश के रूप में संग्रहीत कर सकता हूं लेकिन क्या यह वास्तव में खराब नहीं होगा और डेटाबेस को अनावश्यक रूप से भर देगा?
मुझे बताएं कि इनमें से कोई अस्पष्ट नहीं है, बस यह पता लगाया गया है कि लॉगिंग एप्लिकेशन क्रियाएं/घटनाएं पहले की जानी चाहिए!
धन्यवाद,
पीट
यह विशेष रूप से देखो पेपर ट्रेल की तरह वादा करता है, लेकिन यह केवल एक संस्करण/लॉग को सहेज सकता है जब कोई मॉडल सही हो जाता है? यदि मैं मैन्युअल रूप से प्रत्येक परिवर्तन को मैन्युअल रूप से निर्दिष्ट करना चाहता हूं तो क्या होगा? या यदि कोई कार्रवाई की जाती है जो आवश्यक रूप से मॉडल को बदलती नहीं है लेकिन कुछ और ईमेल भेजती है? –
हां, संस्करण/ऑडिटिंग आमतौर पर केवल रिकॉर्ड परिवर्तनों से ट्रिगर होती है। यदि आपको कस्टम क्रियाओं को लॉग इन करने की आवश्यकता है जो डेटाबेस परिवर्तन को ट्रिगर नहीं करते हैं, तो आपको अपना खुद का लॉगर बनाना होगा। – eugen