'where'查询条件为最后一个关联记录

时间:2015-07-17 11:35:16

标签: ruby-on-rails activerecord pg

我想得到这样的东西:

Post.all.select{|p| p.comments.last.type == 'SpecialComment'}

即。我需要选择帖子'哪里'最后评论有特殊类型。我如何使用活动记录查询语法来完成它?

2 个答案:

答案 0 :(得分:0)

试试这个:

Post.joins(:comments).where("comments.last.type = ?", 'SpecialComment'")

答案 1 :(得分:-2)

class Comment < ActiveRecord::Base
  belongs_to :post, inverse_of: :comments
end

class SpecialComment < Comment
end

class Post < ActiveRecord::Base
  has_many :comments, inverse_of: :comment, dependent: :destroy
  has_many :special_comments
end

Post.joins(:special_comments)