我创建了一个用户可以预订一小时培训的应用程序。这是每天,所以预订必须每天重置;实际上我正在使用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 %>
答案 0 :(得分:0)
在预订表中添加一个布尔列
add_column :bookings, :deleted, :boolean, default: false
然后为您的预订模型添加范围
scope :undeleted, -> { where(deleted: false) }
在您的佣金任务中,而不是仅删除记录
Booking.undeleted.update_all(deleted: true)
ELSE ::
使用paranoia gem来帮助你。它软删除您的记录,并使用模型上的默认范围返回带有未删除记录的数据。这与上面类似,我认为只有在删除记录时它有一个时间戳。相信这个功能可以在不使用gem的情况下实现。
希望有所帮助......