Eğer Rails kullandığınız için, sana bir yerler kaynağın karşılık gelen bu dosyaları olduğunu varsayalım olacak:
app/views/locations/index.html.erb
app/controllers/locations_controller.rb
app/models/location.rb
son 24 saat içinde kayıtları sorgulamak için birkaç ActiveRecord alternatifleri vardır:
Bu örnek, zaman damgası sütunlarını sorgulamak için bir aralık belirleyebileceğiniz kavramını göstermektedir.
@locations = Location.where(updated_at: (Time.now - 24.hours)..Time.now)
Yukarıda sorgu ile ikinci bir hassas hatanın bir kısmı olabilir, aşağıdaki yorum işaret etti. Sorgunun tam olarak 24 saat olmasını sağlamak için now = Time.now
değişkenini saklayabilirsiniz.
now = Time.now
@locations = Location.where(updated_at: (now - 24.hours)..now)
Sen çıkarma işlemini ortadan kaldırmak ve aynı zamanda 24 saat tam bir pencereden ofset hafif sonuçlanabilir ki, Raylar sizin için halletsin başladı.
@locations = Location.where(updated_at: 24.hours.ago..Time.now)
Ayrıca >
karşılaştırma operatörü ile filtreleyen bir SQL dizesi geçirerek, where
parametrelerinde karma sözdizimi vazgeçmek.
@locations = Location.where('updated_at > ?', 24.hours.ago)
Kumandanızda olarak
, tercih sorgu yaklaşımla, bir dizin eylemi ekleyin:
def index
@locations = Location.where(updated_at: 24.hours.ago..Time.now)
end
senin görünümünde, şu satırları ekleyin:
<table>
<thead>
<tr>
<th>Id</th>
<th>Name</th>
<th>Created_At</th>
<th>Updated_At</th>
</tr>
</thead>
<tbody>
<% @locations.each do |location| %>
<tr>
<td><%= location.id %></td>
<td><%= location.name %></td>
<td><%= location.created_at %></td>
<td><%= location.updated_at %></td>
</tr>
<% end %>
</tbody>
</table>
neden 120.day ? Soru değiştirildi mi? –
Hayır öyle değildi. Bu sadece başka bir rastlantısal örnekti. Ben Q ile anlaşma için '24.hours' kullanmak için cevabı güncellendi Kontrol için teşekkürler! – sealocal
Ayrıca çalışır: 'Location.where (updated_at: 1.day.ago..Time.now)' – Adobe