预订的日期验证

时间:2015-11-05 08:52:49

标签: ruby-on-rails ruby

假设我有两个模型使用此模式:

>   create_table "rents", force: :cascade do |t|
t.integer  "car_id"
t.datetime "date_start"
t.datetime  "date_end"
t.integer  "user_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end

  create_table "cars", force: :cascade do |t|
t.string   "name"
t.text     "description"
t.integer  "price_id"
t.datetime "created_at",  null: false
t.datetime "updated_at",  null: false
end

模型租金属于汽​​车,汽车有租金。

我如何添加日期验证,所以假设存在car_id:2和start_date的租金,如2015-11-01和date_end,如2015-11-05。如果我想通过car_id添加另一个租金,我希望应用程序给我错误:2以及此车已预订的日期。

我该怎么做?我应该使用任何特定的宝石吗?

2 个答案:

答案 0 :(得分:0)

您应该使用Rails Callback进行验证,如果不满意,则引发错误。

答案 1 :(得分:0)

你可以试试这个宝石:

    gem 'bookable', '~> 0.0.52'

其文档在此处:https://github.com/kunks001/bookable

或者只是尝试这样的模型验证Dealing with time periods in Rails 3.1