假设我有评论模型和帖子模型,
我可以在视图中使用哪些代码来显示要关联的帖子的第一条评论?
答案 0 :(得分:4)
假设:
post = Post.find(params[:id])
和帖子模型包含:
has_many :comments
然后你可以:
comments = post.comments
first_comment = comments.first
答案 1 :(得分:3)
Post.find(123).comments.first
其中123是您的帖子ID。
答案 2 :(得分:1)
@ post.comments.first通常会有效。 (@post应该在你的控制器方法中设置)
然而,很高兴认识到'first'在协会中首先意味着,通常按id排序。由于ids自动增量,这恰好与“第一次添加”或“最早的评论”相同。但它不一定是。
如果你的评论关联指定了不同的排序,那么首先会使用这个,例如:如果您的关联看起来像这样:
has_many :comments, :order=>'rating desc'
然后(假设“评级”字段设置为某种值,表示平均评分)post.comments.first会给出评分最高的评论,而不是第一个要添加的评论。
在这种情况下,假设您的评论模型有时间戳,那么您需要执行类似
的操作@post.comments.find(:first, :order=>'created_at asc')