我有以下基于模型的注释设计(来源:http://railscasts.com/episodes/154-polymorphic-association):

class Comment
  belongs_to :commentable, :polymorphic => true
end

class Post
  has_many :comments, as => :commentable
end

class Message
  has_many :comments, :as => :commentable
end

etc...


如何通过基于范围的查询从“注释”表中选择所有记录,以使每条记录具有非死注释(死意味着原始fx帖子已删除)?

最佳答案

由于commentable在无法注释的情况下不存在,因此您可以执行以下操作:

class Comment
  belongs_to :commentable, :polymorphic => true
  scope :non_dead_commentable, where('commentable IS NOT NULL')
end


在rails 4中,您可以执行以下操作:

scope :non_dead_commentable, where.not(:commentable => nil)


接着:

Comment.non_dead_commentable

关于mysql - Rails,多态关联-查找具有非死关联记录的记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8533862/

10-11 01:42