Tạo ứng dụng đặt trước. Làm thế nào tôi có thể kiểm tra hoặc xác nhận ngày ví dụ date_start
và date_end
có giá trị củaXác định các ngày xung đột khi tạo đường ray
date_start date_end
26-11-2017 27-11-2017
tôi sẽ tạo ra một phòng trong đó có những giá trị bắt đầu và ngày kết thúc nhưng nó xung đột với các giá trị khác. Làm cách nào để kiểm tra các ngày xung đột?
date_start date_end
25-11-2017 28-11-2017
sử dụng này để xác nhận những ngày ở giữa
Mẫu
validate :no_reservation_overlap
scope :overlapping, ->(period_start, period_end) do
where "((date_start <= ?) and (date_end >= ?))", period_end, period_start
end
private
def no_reservation_overlap
if (Reservation.overlapping(date_start, date_end).any?)
errors.add(:date_end, 'it overlaps another reservation')
end
end
View - chọn ngày
<%= f.label :'date_start:' %>
<%= f.date_field :date_start %>
<%= f.label :'date_end:' %>
<%= f.date_field :date_end %>
Sample ngày 26-27 đã đặt/Reserved được cho là nó phải ngăn chặn từ chèn 25 đến 28 vì 26 đến 27 đã được đặt.
Sự cố trong mã của bạn là gì? – Imran
@Imran Tôi muốn có thể thêm xác thực để kiểm tra xung đột giữa các ngày ở trên. Các ngày mẫu từ 26 đến 27 đã được đặt trước/được cho là ứng dụng phải ngăn chặn việc chèn từ 25 đến 28 vì 26 đến 27 đã được đặt trước. – Pat
Bạn đang sử dụng cơ sở dữ liệu nào (nếu bạn muốn một giải pháp dựa trên SQL)? –