【问题标题】:Will_paginate behavior for deleted posts - displaying correct number of pages已删除帖子的 Will_paginate 行为 - 显示正确的页数
【发布时间】:2011-12-30 23:54:37
【问题描述】:

背景:

我使用用户模型制作了一个新的 rails 3 应用程序,该模型具有回形针附件(图片模型)。我发布了我提交的前 15 个图片记录(附件)作为检查功能的测试。 我在控制器中执行以下操作以显示除前 15 个测试图像之外的所有图片:

@pictures=Picture.order('pictures.id DESC').limit(Picture.last.id-15).paginate(:page => params[:page], :per_page => 15)

虽然我不显示前 15 条记录,但 will_paginate 仍然会显示页数,前提是前 15 条记录仍显示在索引视图中(因为 will_paginate 是从图片模型中获取的)

我想做的事: 使用 will_paginate 显示正确的页数。删除测试图片记录(前15条记录)

问题: 我可以使用 Picture.destroy(:id) 删除前 15 个图片记录。

  1. 以这种方式删除记录后,假设这些记录仍然存在,will_paginate 是否仍会显示页面?

  2. will_paginate 会抛出一个错误,说 :id =>1 的图片不存在吗?

  3. 如何删除图片记录并从 :id =>1 重新开始? (尽管如果

谢谢

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 paperclip will-paginate


    【解决方案1】:

    通常,当您测试功能时,您应该使用与生产环境不同的数据库,这样您就不需要在尝试抵消 ID 或事后删除时搞砸了。

    不过要回答你的问题...

    1. 不,因为它们将在数据库中被销毁,除非您使用 is_paranoid 之类的东西,否则它们将不再存在。
    2. will_paginate 不关心 ID 是否按顺序排列,它只关心总行数
    3. Picture.each(&:destroy) 将删除所有照片,要重置 auto_increment(一个数据库功能),您需要运行类似这样的东西...

    ALTER SEQUENCE your_sequence_name RESTART WITH 1;

    【讨论】:

    • 我应该使用不同的数据库,但我开始在 heroku 上进行测试,并且默认设置为生产环境(我不知道 heroku 是否允许测试环境) 1. &2.是的,当我删除测试图片记录时,will_paginate 并不关心。 3. 我无法让 Picture.each(&:destroy) 工作。
    • Picture.destroy_all 是另一种删除所有记录的方式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-08
    • 2020-05-18
    相关资源
    最近更新 更多