سؤال

لدي جمعية متعددة الأشكال بسيطة

#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 مع التعليقات إذا كنت بحاجة إلى الأداء.

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