Показать первую запись в рельсах - PullRequest
2 голосов
/ 28 августа 2009

Предполагая, что у меня есть модель комментариев и модель сообщений,

Какой код я могу использовать в представлении для отображения первого комментария поста, на который идет ссылка?

Ответы [ 3 ]

4 голосов
/ 28 августа 2009

при условии:

post = Post.find(params[:id])

и почтовая модель содержит:

has_many :comments

тогда вы можете:

comments = post.comments
first_comment = comments.first
3 голосов
/ 28 августа 2009
Post.find(123).comments.first

Где 123 - идентификатор вашего сообщения.

1 голос
/ 28 августа 2009

@post.comments.first будет нормально работать. (@post должен быть установлен в вашем методе контроллера)

Однако хорошо понимать, что «первое» означает первое в ассоциации, которое обычно упорядочено по id. Начиная с идентификатора автоинкремент, это то же самое, что «первый добавленный» или «самый ранний комментарий». Но это не обязательно.

Если ваша ассоциация для комментариев указала другой порядок, то сначала будет использовать это, например, если ваша ассоциация выглядела так:

has_many :comments, :order=>'rating desc'

Затем (при условии, что поле 'rating' каким-то образом настроено на некоторое значение, представляющее средний рейтинг), post.comments.first даст вам комментарий с самым высоким рейтингом, а не первый, который будет добавлен.

В этом случае, если ваша модель комментариев имеет временные метки, вам нужно будет сделать что-то вроде

@post.comments.find(:first, :order=>'created_at asc')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...