例如,如果我想使用@ posts.all拉所有@posts,但我不想包含最后一条或最新的记录?
这是我想要做的,
@posts = Post.all(没有创建的最新记录。)
基本上都是记录,但不是最后的记录。
答案 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)