我怎么不包括最新的记录,但所有记录来自rails中的对象?

时间:2016-04-05 19:15:41

标签: ruby-on-rails ruby ruby-on-rails-4 activerecord rails-activerecord

例如,如果我想使用@ posts.all拉所有@posts,但我不想包含最后一条或最新的记录?

这是我想要做的,

@posts = Post.all(没有创建的最新记录。)

基本上都是记录,但不是最后的记录。

4 个答案:

答案 0 :(得分:2)

我认为尝试生成排除最后一个元素的SQL查询是不值得的。特别是子查询可能比将所有记录加载到Array而不是排除最后一个记录要慢:

@posts = Post.all[0..-2]

评论中的另一个例子如下:

@contact_prices = @contact.retail_prices.all.order("created_at DESC").load[0..-2]

另一个选项(取决于您的关系的顺序)可能是使用offset

@contact_prices = @contact.retail_prices.order("created_at DESC").offset(1)

答案 1 :(得分:1)

这是我想要做的最直接的方式:

Post.limit(Post.count - 1)

如果您希望查询允许分页或其他LIMIT查询,您可以尝试类似

的内容
Post.where("id < ?", Post.last.id)

答案 2 :(得分:1)

很多答案可以解决问题,但是会抛出一个额外的选项:

int inorder(Myprod a)
{  
int f=0;
char resposta[1];
int i;
int p;


if(a != NULL )
{ 

    inorder(a->left);
    printf("%s\n",a->prod);
    f++;
    flag += f;
    inorder(a->right);


    if(flag == 20)

    printf("Want to see more elements from tree ? (Y/N)\n");

    i = scanf ("%s" , resposta);

    if (resposta[0] == 'N' && i == 1)
    {
      return 1;
    }

    flag = f =  0;
     p = inorder(a);
     if (p == 1)
        return 1;

    }



return 0;
}

答案 3 :(得分:0)

一行AR:

Post.where.not(id: Post.last&.id)