Rails,多态关联 - 查找具有非死相关记录的记录

时间:2011-12-16 12:02:36

标签: mysql ruby-on-rails polymorphic-associations

我有以下模特评论设计(来源: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帖子被删除)?

1 个答案:

答案 0 :(得分:0)

由于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