每天保存预订,而不是删除所有

时间:2017-04-28 01:19:23

标签: ruby-on-rails ruby time

我创建了一个用户可以预订一小时培训的应用程序。这是每天,所以预订必须每天重置;实际上我正在使用heroku调度程序,因此每天早上06:00都会删除预订。

我不希望删除预订,我想将它们保存在数据库中,但我不知道如何应用这种逻辑。

我的scheduler.rake文件:

desc "This task is called by the Heroku scheduler add-on"
task :reset_bookings => :environment do
  Booking.all.delete_all
end

我想知道如何将用户预订的状态设置为false,以便我可以再次预订(第二天)

新预订html.erb查看:

<% unless current_user?(@user) %>
<% if current_user.trainings.include?(@training) %>
  <%= link_to "Cancelar reserva",
      training_booking_path(@training, @training.bookings.where(user:
      current_user).first),
      method: :delete, data:{ confirm: 'You sure?' },
      class: "btn btn-primary" %>
  <% end %>
  <% if current_user.trainings.any? %>
    <% else %>
      <%= link_to "Reservar", new_training_booking_path(@training,
      @training.bookings.where(user: current_user).first),
      class: "btn btn-primary" %>
    <% end %>
<% end %>

1 个答案:

答案 0 :(得分:0)

在预订表中添加一个布尔列

add_column :bookings, :deleted, :boolean, default: false

然后为您的预订模型添加范围

scope :undeleted, -> { where(deleted: false) }

在您的佣金任务中,而不是仅删除记录

Booking.undeleted.update_all(deleted: true)

ELSE ::

使用paranoia gem来帮助你。它软删除您的记录,并使用模型上的默认范围返回带有未删除记录的数据。这与上面类似,我认为只有在删除记录时它有一个时间戳。相信这个功能可以在不使用gem的情况下实现。

希望有所帮助......