我正在为预订系统制作一个网络应用程序,用户可以选择小时,但每小时最多可以占用4个用户。 我有一个名为Hours的模型,在他的控制器中我显示一个完整日历,但只显示预约时间,我想每小时显示一个新预订模型的链接。
我很难,我可以用这种方法创造时间,但似乎不起作用
def horas_libres
t1 = DateTime.now.beginning_of_hour() + 2.hours
t2 = t1 + 1.months
@hora = Hora.new()
(t1 .. t2).step(1.hours) do |h|
@hora = Hora.new()
@hora.inicio = h
@hora.fin = (h + 1.hours)
@hora.cable_id = 1
@hora.plazas = 0
if Hora.where(inicio: @hora.inicio).nil? then
@hora.save
end
end
@horas = Hora.all
end
我不知道这是否是最佳方式,所以如果有人有任何建议或更正使该方法有效,那将是非常有帮助的。谢谢!
这是小时迁移
class CreateHoras < ActiveRecord::Migration
def change
create_table :horas do |t|
t.datetime :inicio, :null => false
t.datetime :fin, :null => false
t.integer :horainicio, :null => false, :default => 10
t.integer :horafin, :null => false, :default => 22
t.references :cable, index: true, :null => false
t.integer :plazas, :null => false, :default => 0
t.string :titulo, :null => false, :default => "Libre"
t.string :color, :null => false, :default => "Green"
t.boolean :activo, :null => false, :default => true
t.timestamps
end
add_index :horas, :inicio, :unique => true
add_index :horas, :fin, :unique => true
end
end
答案 0 :(得分:0)
我不明白为什么你需要Hora
模型。您可以在Reservation
模型中执行所有操作,因为rails内置了处理时间的函数。
在Reservation
模型中,您可以拥有一个名为date_of_reservation
的列,您还可以使用自定义验证方法,在date_of_reservation
小时内检查数据库中的预留计数。如果计数超过4,则会添加一个错误,导致用户无法创建新的预订。