Có, bạn có thể so sánh trực tiếp giá trị của trường created_at
Ngày/giờ ActiveRecord với đối tượng DateTime
thông thường (giống như đối tượng bạn có thể phân tích cú pháp chuỗi bạn có).
Trong một dự án tôi có một đối tượng giá trị gia tăng mà có một đối tượng created_at datetime:
imac:trunk luca$ script/console
Loading development environment (Rails 2.3.2)
>> Value.first.created_at
=> Fri, 12 Jun 2009 08:00:45 CEST 02:00
>> Time.parse("2009-06-03 16:57:45.608000 -04:00")
=> Wed Jun 03 22:57:45 0200 2009
>> Value.first.created_at > Time.parse("2009-06-03 16:57:45.608000 -04:00")
=> true
Trường created_at được định nghĩa là:
create_table "values", :force => true do |t|
[...]
t.datetime "created_at"
end
N.B. nếu trường của bạn là một ngày và không phải là một datetime, thì bạn cần phải chuyển nó sang một thời điểm:
Post.first.created_at.to_time > Time.parse("2009-06-03 16:57:45.608000 -04:00")
hoặc phân tích một ngày:
Post.first.created_at > Date.parse("2009-06-03 16:57:45.608000 -04:00")
nếu không bạn sẽ nhận được một:
ArgumentError: comparison of Date with Time failed
Chỉ cần lưu ý: So sánh các đường ray của đối tượng datetime riêng với những đối tượng khác có thể cho kết quả rất bất ngờ. Đáng chú ý ... xem bên dưới: 'p.created_at # Thứ Sáu, 28 Tháng 8 2015 21:45:14 UTC: 00' ' p.updated_at # Fri, 28 Aug 2015 21:45:14 UTC cho: 00 ' ' p.created_at == p.updated_at # false' Vì vậy, bạn phải làm điều này ... 'p.created_at.to_i == p.updated_at.to_i # true' thông tin thêm tại đây: http: // stackoverflow .com/questions/19599792/compare-same-datetime-objects-in-ruby-why-are-these-two-datetime-nows – bwest87