के साथ रेल त्रुटियों का संचालन मैं अपने इवेंट ऑब्जेक्ट (ईवेंट प्रारंभ, घटना चर्चा, घटना प्रकाशित, आदि) में विभिन्न राज्यों को संभालने के लिए rubyist-aasm राज्य मशीन का उपयोग कर रहा हूं। जब कुछ शर्तों को पूरा नहीं किया जाता है तो मैंने राज्य परिवर्तनों को रोकने के लिए गार्ड जोड़े।एएएसएम राज्य मशीन
यह सब ठीक काम करता है लेकिन गार्ड द्वारा राज्य परिवर्तन को अस्वीकार करते समय यह कोई त्रुटि नहीं दिखाता है। कोई विचार है कि मैं राज्य को कैसे देख सकता हूं? मैं राज्यों को मैन्युअल रूप से देख सकता हूं लेकिन यह एक बदसूरत समाधान की तरह लगता है।
aasm_state :firststate
aasm_state :secondstate
aasm_event :approve do
transitions :to => :secondstate, :from => [:firststate], :guard => :has_a_price?
end
def has_a_price?
self.price.present?
end
धन्यवाद, यह नियंत्रक में काम करेगा लेकिन मैं इन चीजों को मॉडल में रखना चाहता हूं। आपके समाधान के साथ मैं अभी भी सत्यापन के बिना किसी अन्य मॉडल में संक्रमण का उपयोग कर सकता हूं। – Cimm
आह, ठीक है। आईएमओ गार्ड वास्तव में एक सत्यापन त्रुटि नहीं है जहां तक एआर मॉडल का संबंध है, यह एक गार्ड है जो बस राज्य मशीन पर होने वाली संक्रमण की रक्षा करता है, मैं व्यक्तिगत रूप से कॉल करने से खुश हूं! विधि (किसी अन्य मॉडल या नियंत्रक में) और वापसी की जांच। यदि आप सही नहीं पूछते हैं तो आप कुछ नहीं देख सकते हैं? मैं यहां पूरी तरह गलत हो सकता हूं इसलिए मुझे यह देखने में खुशी होगी कि क्या कोई अन्य समाधान फसल हो रहा है। यदि आप वास्तव में एक सत्यापन त्रुटि भी चाहते हैं तो आप validates_presence_of जैसे कुछ जोड़ सकते हैं: मूल्य,: if => "self.second_state?" – tsdbrown