Ruby on rails 不包括属于顶级帖子的评论
我有三种模式:帖子、问题和评论,其中帖子有很多问题,问题有很多评论(帖子也有很多通过问题的评论)。我有一个方法如下所示:Ruby on rails 不包括属于顶级帖子的评论,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有三种模式:帖子、问题和评论,其中帖子有很多问题,问题有很多评论(帖子也有很多通过问题的评论)。我有一个方法如下所示: def home @post = Post.where(:top => true).limit(1) @comments = Comment.order("created_at desc") end 问题是,我不希望@comments的任何评论属于@post的帖子。如何排除(通过问题)属于第一篇文章的评论?仅使用where排除属于@post的评论。而不是: @
def home
@post = Post.where(:top => true).limit(1)
@comments = Comment.order("created_at desc")
end
问题是,我不希望@comments的任何评论属于@post的帖子。如何排除(通过问题)属于第一篇文章的评论?仅使用
where排除属于@post
的评论。而不是:
@comments = Comment.order("created_at desc").where.not(post_id: @post.id)
有关where.not
in的更多信息
正如在下面的注释中添加的OP一样,如果在Post
和Comment
之间存在另一个模型(在本例中为:Question
),则可以执行以下操作:
@comments = Comment.order("created_at desc").where.not(question_id: @post.question_ids)
啊,太好了,我不知道在哪里。但有一件事我应该包括在问题中——我在帖子和评论之间有一个称为问题的模型,因此评论只有一个问题id。我不确定说问题id的语法是否正确。post:@post。id@user2759575好的,看看我编辑的答案,它(希望)反映了添加的问题。然而,我无法知道问题和帖子(多对多、一对多等)之间的关系是基于您给我的上下文。问题和评论也是如此。你能把所有这些信息(包括你上面的评论)添加到问题中吗?如果能从一开始就把所有的信息都放在问题中,那就太好了。是的,很抱歉,我用更多的细节编辑了这个问题。这越来越近了,但是因为一篇帖子有很多问题@post.question不起作用。嗯,这给了我一个针对nil:NilClass错误的“未定义方法`question\u id”。你是否仍然有@post=post.where(:top=>true)。限制(1)
?未定义的方法。。。对于nil:NilClass
错误是说@post
为空,这意味着它没有被设置,或者在top
为真的地方没有post。