ابحث عن طريقك لأعلى شجرة الأشكال إلى أحد الوالدين
-
25-09-2019 - |
سؤال
لدي جمعية متعددة الأشكال بسيطة
#comment.rb
belongs_to :commentable, :polymorphic => true
has_many :comments, :as => :commentable
#post.rb
has_many :comments, :as => :commentable
accepts_nested_attributes_for :comments, :allow_destroy => true
لذلك في IRB يمكنني القيام بذلك ، post.Comments ، أو Comments.com.
ولكن كيف يمكنني العثور على منشور الوالدين؟
كما في التعليق. بوست؟
يمكنني حاليًا الحصول على سلسلة من .commentable
'س. علي سبيل المثال :
Comment.find(1).commentable.commentable
=> Post(:id => ...
المحلول
يمكنك رفع القائمة ، على سبيل المثال:
class Comment < ActiveRecord::Base
def parent_post
c = self
c = c.commentable while c.is_a?(Comment)
c
end
end
لكن هذا يمكن أن يصبح بطيئًا جدًا إذا تم تجديدهم بعمق (n
استفسارات DB). أقترح عليك ببساطة تخزين parent_post_id
مع التعليقات إذا كنت بحاجة إلى الأداء.
لا تنتمي إلى StackOverflow