Rails - 给定@Comments - 如何获得第二个到最后一个评论而没有重新命名数据库

AnA*_*ice 21 ruby-on-rails ruby-on-rails-3

给定@comments可以包含1个或多个记录.我如何获得倒数第二条评论?

谢谢

Dig*_*oss 31

我想这也将被称为倒数第二条记录:

@comments[-2]
Run Code Online (Sandbox Code Playgroud)

以下是 Ruby有趣的索引运算符的文档1.


1. Rubyists,请注意我是如何联系到这一点的.如果你从ruby-doc链接中取出版本,那么引用将是持久的并且是最近的.


koa*_*ima 11

使用任何Ruby数组,您可以指定任何范围或特定索引,例如,如果您想要从第二个最旧到第二个最新的评论,您可以这样做:

@comments[1..-2]
Run Code Online (Sandbox Code Playgroud)

并获得倒数第二个:

@comments[-2]
Run Code Online (Sandbox Code Playgroud)

Ruby Array#range的文档

在Rails中,如果你想要最后两个注释,那么你可以这样做,它返回最后两个的数组:

@comments.last(2)
Run Code Online (Sandbox Code Playgroud)

ActiveRecord :: FinderMethods的文档

  • 'last(2)`的+1.这在直接在模型上使用时也很有效,而不必将所有记录预加载到内存中,例如`Comment.last(2)`. (2认同)

小智 7

可以包含1个或多个记录

这个问题已经过时了,但对于那些现在来到这里的人来说......

如果只有一条记录,其他解决方案将返回nil.如果您想确保返回记录使用:

@comments.last(2)[0]
Run Code Online (Sandbox Code Playgroud)