العثور على الجمعيات لفئة أكتيفيريكورد في وقت التشغيل؟

StackOverflow https://stackoverflow.com/questions/644718

سؤال

وأود أن العثور على 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).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top