每小时生成多个ActiveRecord模型对象

时间:2013-11-19 17:45:19

标签: ruby-on-rails database ruby-on-rails-4 fullcalendar

我正在为预订系统制作一个网络应用程序,用户可以选择小时,但每小时最多可以占用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

1 个答案:

答案 0 :(得分:0)

我不明白为什么你需要Hora模型。您可以在Reservation模型中执行所有操作,因为rails内置了处理时间的函数。

Reservation模型中,您可以拥有一个名为date_of_reservation的列,您还可以使用自定义验证方法,在date_of_reservation小时内检查数据库中的预留计数。如果计数超过4,则会添加一个错误,导致用户无法创建新的预订。