नष्ट करने की स्थिति के तहत नष्ट हो गया है before_destroy
हुक के भीतर, क्या ऑब्जेक्ट (क्लास) destroy
कहा जाता है?एसोसिएशन के माध्यम से एसोसिएशन निर्भर है, जिसे
निम्नलिखित उदाहरण में, जब patient
नष्ट हो जाता है, तो उनके appointments
(जो मैं चाहता हूं); हालांकि मैं physician
से जुड़े appointments
पर physician
को नष्ट करने की अनुमति नहीं देना चाहता हूं।
फिर, before_destory
कॉलबैक में ऐसी जांच करने का कोई तरीका है? यदि नहीं, तो क्या कॉल के "दिशा" (यानी किसने कहा जाता है) के आधार पर इस "विनाश की जांच" को पूरा करने का कोई और तरीका है?
class Physician < ActiveRecord::Base
has_many :appointments, dependent: :destroy
has_many :patients, through: :appointments
end
class Patient < ActiveRecord::Base
has_many :appointments, dependent: :destroy
has_many :physicians, through: :appointments
end
class Appointment < ActiveRecord::Base
belongs_to :patient
belongs_to :physician
before_destroy :ensure_not_referenced_by_anything_important
private
def ensure_not_referenced_by_anything_important
unless patients.empty?
errors.add(:base, 'This physician cannot be deleted because appointments exist.')
false
end
end
end
: एक शाखा 'रेल 4' के लिए किस्मत में में [' restrict' पदावनत किया गया था] (https://github.com/rails/rails/commit/5ad79989ef0a015fd22cfed90b2e8a56881e6c36#diff-5870816b49b90e43340607bb11ed2514R91) अगस्त 10, 2012 है। [* एसोसिएशन बेसिक्स * गाइड भी अपडेट किया गया था] (https://github.com/rails/rails/commit/a63fc94aa3689f1e781ac51411ec79a81c011d8a)। ': limit_with_exception' समान कार्यक्षमता प्रदान करता है जैसे 'प्रतिबंधित' किया गया; एक और समान विकल्प भी है, ': limit_with_error', जो किसी संबंधित ऑब्जेक्ट पर मालिक को त्रुटि जोड़ने का कारण बनता है। – user664833