2012-05-30 29 views
6

Tôi đang xem xét sử dụng Ice Cube https://github.com/seejohnrun/ice_cube cho các sự kiện định kỳ. Câu hỏi của tôi là, nếu sau đó tôi cần nhận được bất kỳ sự kiện nào trong một khoảng thời gian nhất định (ví dụ: trong một ngày hoặc trong vòng một tuần), có cách nào tốt hơn là lặp lại tất cả các trường hợp như sau:Lấy lịch trình ice_cube hiệu quả trong một khoảng thời gian nhất định

items = Records.find(:all) 
items.each do |item| 
    schedule = item.schedule 
    if schedule.occurs_on?(Date.new) 
     #if today is a recurrence, add to array 
    end 
end 

Điều này có vẻ khủng khiếp không hiệu quả nhưng tôi không chắc chắn cách khác để đi về nó.

+0

Bạn đã làm gì với nó? im bị mắc kẹt ở cùng một nơi? cảm ơn – loloso

Trả lời

4

Đó là một cách tiếp cận - nhưng những gì mọi người làm thường xuyên hơn là kết thúc chuẩn hóa lịch biểu của họ thành định dạng thuận tiện có thể truy vấn được.

Bạn có thể có một bộ sưu tập được gọi là một cái gì đó như ScheduleOccurrences - mà bạn xây dựng mỗi tuần/và sau đó truy vấn để thay thế.

Thật không may, nó phải hoạt động theo cách này, nhưng gắn bó với cách quản lý lịch biểu của iCal đã dẫn IceCube cần định dạng dữ liệu theo những cách nhất định (cụ thể là cách có thể phù hợp với yêu cầu của iCal RFC).

Gần đây tôi đã suy nghĩ về thư viện sẽ bị xóa bỏ một số hạn chế như thế nào, vì tính linh hoạt cao hơn như thế này - nhưng chắc chắn nó vẫn còn một chút.

Hy vọng điều này sẽ giúp

+0

Cảm ơn, John. Nhưng điều gì sẽ xảy ra khi người dùng duyệt qua lịch trong tuần tới? – 99miles

+0

Có thể bạn có thể tạo ScheduleOccurrences khi cần thiết? Vì vậy, nếu ai đó yêu cầu lịch tuần tới, máy chủ có thể lưu các hàng. Tôi hiện đang cố gắng tìm ra cách để lặp lại các sự kiện trong đường ray của mình ... – mscriven

Các vấn đề liên quan