के माध्यम से मैं rails3_acts_as_paranoid मणि का उपयोग कर रहा हूं, और has_many के साथ दायरे को नियंत्रित करने में कुछ समस्याएं हैं: संघों के माध्यम से।रेल कृत्यों_as_paranoid और has_many:
उदाहरण
लिए# User.rb
acts_as_paranoid
has_many :folders
has_many :files, :through => :folders
-
# Folder.rb
acts_as_paranoid
belongs_to :user
has_many :files, :dependent => :destroy
-
# File.rb
acts_as_paranoid
belongs_to :files
अब बस कहीं कहना users_controller.rb मैं एक उपयोगकर्ता से संबंधित सभी फाइलों को क्वेरी करना चाहते हैं में की सुविधा देता है, चाहे वे हटा दिए गए हों, और/या हटाए गए फ़ोल्डर्स से संबंधित हों। इसलिए स्वाभाविक रूप से मैं निम्नलिखित की तरह कुछ करने के लिए ग्रहण करेंगे
current_user.files.with_deleted
with_deleted
विधि यह files.deleted_at IS NULL
को दूर करने में काम है ... लेकिन ... यह does not फ़ोल्डरों जो प्रयोग किया जाता है के लिए default_scope को दूर करता है पर्दे के पीछे की तरह। तो हमारे पास अभी भी folders.deleted_at IS NULL
स्थिति है, जो मुझे उन फ़ोल्डर्स से संबंधित फ़ाइलों को पुनर्प्राप्त करने से रोकती है जहां delete_at शून्य नहीं है।
मैं act_as_paranoid का उपयोग करना जारी रखना चाहता हूं, क्योंकि यह मेरे ऐप के अन्य सभी स्थानों में अविश्वसनीय रूप से उपयोगी है, और मैन्युअल फ़िल्टरिंग और .where_values
सरणी के तत्वों को पॉप आउट करने की कोशिश नहीं कर रहा हूं। लेकिन मुझे जटिल क्षेत्रों को संभालने के बारे में बहुत कुछ पता नहीं है या कौन सी विधियां उपलब्ध हैं।
ऐसा लगता है कि #unscoped विधि वह है जो आप यहां खोज रहे हैं: http://apidock.com/rails/ActiveRecord/Scoping/Default/ClassMethods/unscoped – pjam
मैंने अनसुलझा विधि की कोशिश की, लेकिन यह दायरे को छोड़ देता है स्वचालित रूप से फाइलों को उपयोगकर्ता को ब्रिजिंग में शामिल करने के लिए, विशेष रूप से 'INNER फ़ोल्डरों पर फ़ोल्डरों में शामिल हों। फ़ोल्डर्स_आईडी = फ़ोल्डर्स.आईडी फ़ोल्डर्स.यूसर_आईडी = 1' जब तक कि मुझे इसे रखने के लिए अनकॉप्ड की सुविधा याद न हो? – Misterparker
मैं अभी भी जांच कर रहा हूं कि मुझे कोई समाधान मिल रहा है, लेकिन बस ध्यान दें कि '@user = user.find current_user.id' पंक्ति बेकार है, क्योंकि आप current_user – pjam