Jus*_*idl 11 activerecord list ruby-on-rails-3
我正在尝试使用activerecord列出最近创建的位置视图的记录或过去24小时更新的记录,但我是初学者需要一些帮助的开发人员.
有谁知道在控制器/视图中实现这个的解决方案?在此先感谢您的帮助.
sea*_*cal 35
由于您使用的是Rails,我将假设您拥有这些文件,对应于Locations资源:
app/views/locations/index.html.erb
app/controllers/locations_controller.rb
app/models/location.rb
Run Code Online (Sandbox Code Playgroud)
在过去24小时内,有一些ActiveRecord替代方法可用于查询记录:
此示例演示了您可以指定查询时间戳列的范围的概念.
@locations = Location.where(updated_at: (Time.now - 24.hours)..Time.now)
Run Code Online (Sandbox Code Playgroud)正如下面的评论中所指出的,上述查询可能只有一小部分精度误差.您可以存储变量,now = Time.now以确保您的查询正好跨越24小时.
now = Time.now
@locations = Location.where(updated_at: (now - 24.hours)..now)
Run Code Online (Sandbox Code Playgroud)您可以消除减法操作并让Rails为您处理它,这也可能导致从24小时的精确窗口略微偏移.
@locations = Location.where(updated_at: 24.hours.ago..Time.now)
Run Code Online (Sandbox Code Playgroud)您还可以放弃where参数中的哈希语法,传递使用>比较运算符过滤的SQL字符串.
@locations = Location.where('updated_at > ?', 24.hours.ago)
Run Code Online (Sandbox Code Playgroud)在您的控制器中,使用您首选的查询方法添加索引操作:
def index
@locations = Location.where(updated_at: 24.hours.ago..Time.now)
end
Run Code Online (Sandbox Code Playgroud)
在您的视图中,添加以下行:
<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>
Run Code Online (Sandbox Code Playgroud)