2016-03-20 15 views
0

Bir datetime türü olan bir sütun adı videokonfavailability ile bir profil tablosum var. Time.now adresinden 1 saat ve Time.now öğesinden 1 saat önce tüm videonun kullanılabilirliğini aramak için Ajax button_tag'ı yapmaya çalışıyorum. Şimdiye kadar bu satır var, diğer koşulları filtrelemek için bir NOT cümlesi var mı?Bir datetime sütunu sorgulamak için bir activerecord deyimi yazma

Profile.where("videoconfavailability <= ? AND videoconfavailability >= ?", Time.now + 1.hour , Time.now - 1.hour) 

burada nihai hedef 1 saat şimdiki zaman önce ve 1 saat şimdiki zaman sonra belli TÜM mevcut olmasıdır. Bu işe yarayacak mı?

+0

Bu konuda süslü bir kapsam veya lamda veya sınıf yöntemi yapabilir miyim? – Philip

+0

ilk soru ... Bunu denedin mi? eğer öyleyse, çıktıların ne olduğunu bize bildirin. İkincisi, evet bunu metod edebiliriz ama üzerine harekete geçmeden önce lütfen ne denediğini bize bildirin lütfen, teşekkürler – Richlewis

cevap

0

Bana iyi görünüyor - belki de bununla ilgili sorunu açıklayabilirsiniz!

Kullanım açısından, Profile modelinize bağlı bir kapsam oluşturmayı düşünebilirsiniz. Farklı zaman aralıklarıyla kullanmanız gerekiyorsa belki de arguments kabul edebilir. Eğer değilse, tekrar tekrar kullanarak tekrar tekrar kullanımı daha kolay hale getirmek için sabitleyin. belki daha da özlü şeyler yapmak Raylar zaman yardımcılarından yapım kullanımını dikkate sorunuzu yazıldığı gibi

scope :available_within_time, -> (start, end) { where("videoconfavailability <= ? AND videoconfavailability >= ?", start, end) 

.

1.hour.ago 
1.hour.from_now 

siz yapabilirsiniz diğer bazı durumunu kontrol etmek negatif eşleşmeleri filtrelemek istiyorsanız

mevcut sorgunun üzerine .where.not(QUERY) zincire.

+1

bu daha şık görünüyor çünkü şimdi bir kapsamda ..... – Philip

İlgili konular