العثور على الجمعيات لفئة أكتيفيريكورد في وقت التشغيل؟
-
22-07-2019 - |
سؤال
وأود أن العثور على assocations من فئة أكتيفيريكورد في وقت التشغيل ...
لنفترض لدي ما يلي:
class Person < ActiveRecord::Base
has_many :chairs
has_many :pens
end
class Chair < ActiveRecord::Base
belongs_to :person
end
class Pen < ActiveRecord::Base
belongs_to :person
end
وكيف يمكنني معرفة في وقت التشغيل هذا الشخص "له العديد من" كراسي وأقلام، والعكس بالعكس؟ أنا أبحث عن الطريقة التي سيعود مجموعة من السلاسل (في حالة وجود مثل هذا الأسلوب). أي
Person.has_many_assocations
وسيعود:
["chairs", "pens"]
و
Pen.belongs_to_associations
وسيعود:
["person"]
وأنا في عداد المفقودين طريقة مثل هذا موجود ؟؟
وشكرا لمساعدتكم.
المحلول
وأعتقد أن أكتيفيريكورد :: انعكاس الطبقة قد يكون ما تبحث عنه. من وثائق:
Account.reflect_on_all_associations # returns an array of all associations
Account.reflect_on_all_associations(:has_many) # returns an array of all has_many associations
نصائح أخرى
ويبدو وكأنه شيء سخيف جدا أن تفعل وقت التشغيل. ماذا تحاول انجازه بالضبط؟ وأفترض أن هناك حلا بسيطا وأكثر من ذلك تستخدم عادة لأيا كان لديك مشكلة.
إذا اضطررت ل، فما استقاموا لكم فاستقيموا استخدام TheModel.read_inheritable_attribute(:reflections)
.
لا تنتمي إلى StackOverflow