प्रासंगिक कोड: http://pastebin.com/EnLJUJ8Gरेल 3: क्या मुझे किसी ऑब्जेक्ट को बाद में कॉलबैक में सहेजना चाहिए?
class Task < ActiveRecord::Base
after_create :check_room_schedule
...
scope :for_date, lambda { |date| where(day: date) }
scope :for_room, lambda { |room| where(room: room) }
scope :room_stats, lambda { |room| where(room: room) }
scope :gear_stats, lambda { |gear| where(gear: gear) }
def check_room_schedule
@tasks = Task.for_date(self.day).for_room(self.room).list_in_asc_order
@self_position = @tasks.index(self)
if @tasks.length <= 2
if @self_position == 0
self.notes = "There is another meeting in
this room beginning at # {@tasks[1].begin.strftime("%I:%M%P")}."
self.save
end
end
end
private
def self.list_in_asc_order
order('begin asc')
end
end
मैं एक छोटे से काम अनुप्रयोग बना रहा हूं। प्रत्येक कार्य एक कमरे में सौंपा गया है। एक बार जब मैं कोई कार्य जोड़ता हूं, तो मैं यह देखने के लिए कॉलबैक का उपयोग करना चाहता हूं कि यह देखने के लिए कि पहले और बाद में उसी कमरे में कार्य हैं या नहीं, मैंने अभी जोड़ा है (हालांकि मेरा कोड केवल एक किनारे का मामला संभालता है)।
इसलिए मैंने after_create का उपयोग करने का निर्णय लिया (चूंकि उपयोगकर्ता इसे संपादित करने के लिए मैन्युअल रूप से जांच करेगा, इसलिए बाद में नहीं) इसलिए मैं दिन में कार्यों, दिन में कार्यों को पूछने के लिए दो स्कॉप्स और क्लास विधि का उपयोग कर सकता हूं, और समय के साथ उन्हें आदेश। मैं फिर सरणी में ऑब्जेक्ट पाता हूं और अगर कथन का उपयोग शुरू करता हूं।
मुझे वस्तु को स्पष्ट रूप से सहेजना है। यह काम करता हैं। लेकिन यह अजीब लगता है कि मैं यह कर रहा हूँ। मैं बहुत अनुभवी नहीं हूं (पहला ऐप), इसलिए मुझे यकीन नहीं है कि यह भयानक है या यदि यह सम्मेलन है। मैंने एक गुच्छा खोजा है और एक संदर्भ पुस्तक के माध्यम से देखा है, लेकिन मुझे यह विशिष्ट कुछ भी नहीं देखा है।
धन्यवाद।
के बाद से स्कोप लोड नहीं होगा यह ऑब्जेक्ट (या क्या मैं इसके बारे में गलत हूं?), मुझे इस ऑब्जेक्ट को मैन्युअल रूप से @ टास्क सरणी में डालना होगा, सही? – douglas
मेरा संपादन देखें। मूल रूप से सहेजने से पहले 1 विवाद की जांच करें, यह देखने के बजाय कि आपकी क्वेरी सहेजने के बाद 2 या अधिक ऑब्जेक्ट लौटाती है या नहीं। –
डेटाबेस में रिकॉर्ड के लिए जांच कर रहा है ActiveRecord खोजक विधि 'मौजूद है?' का उपयोग किया जाना चाहिए। [सक्रिय रिकॉर्ड एपीआई डॉक] देखें (http://apidock.com/rails/ActiveRecord/FinderMethods/exists%3F) – unnu