我有一个简单的多态关联
#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或Comment.comments。
但我怎样才能找到父帖?
与Comment.post一样?
我现在可以通过一系列.commentable
来完成他们的工作。例如:
Comment.find(1).commentable.commentable
=> Post(:id => ...
答案 0 :(得分:1)
你可以上去,例如:
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
与评论存储起来。