2015-05-01 3 views
2

У меня есть три модели: сообщения, вопросы и комментарии, где в сообщениях много вопросов и вопросов, есть много комментариев (в сообщениях также есть много комментариев по вопросам). У меня есть метод, который выглядит следующим образом:Исключая комментарии, которые принадлежат к первому сообщению

def home 
    @post = Post.where(:top => true).limit(1) 
    @comments = Comment.order("created_at desc") 
end 

Дело в том, что я не хочу любой из комментариев от @comments принадлежать к сообщению от @post. Как исключить комментарии, которые принадлежат (через вопрос), к первому сообщению?

ответ

3

Просто исключить комментарии, принадлежащие @post с where.not:

@comments = Comment.order("created_at desc").where.not(post_id: @post.id) 

Более подробную информацию о where.not в this blog post.

Как добавил ОП в комментариях ниже, если есть другая модель между Post и Comment (в данном случае: Question), то вы можете сделать следующее:

@comments = Comment.order("created_at desc").where.not(question_id: @post.question_ids) 
+0

Ах совершенна, я не был осознавая, где. Одна вещь, которую я должен был включить в вопрос - у меня есть модель между сообщениями и комментариями, называемыми вопросами, поэтому в комментариях есть только вопрос_ид. Я не уверен в правильном синтаксисе, чтобы сказать question_id.post: @ post.id – user2759575

+0

@ user2759575 Хорошо, проверьте мой отредактированный ответ, который (надеюсь) отражает добавление вопросов. Тем не менее, у меня нет возможности узнать, какие отношения между вопросами и сообщениями (многие-ко-многим, один-ко-многим и т. Д.) Основаны на контексте, который вы мне дали. То же самое с вопросами и комментариями. Можете ли вы добавить всю эту информацию (включая ваш комментарий выше) к вопросу? Было бы неплохо поставить всю эту информацию в этот вопрос с самого начала. –

+0

Да, извините, я отредактировал этот вопрос более подробно. Это становится все ближе, но поскольку почта has_many вопросы @ post.question не работает. – user2759575

Смежные вопросы