デフォルトのcreated_at Railsフィールドを使用して、時間範囲にのみ含まれるレコードを取得する必要があります。作成された日は関係ありません。
私はこれを持っています:
@start_time = test.start_time.strftime("%I:%M%p")
@end_time test.end_time.strftime("%I:%M%p")
@websites = device.websites.where(:created_at => @start_time..@end_time)
私はこのようなものを探していました:
@websites = device.websites.where(:created_at::time => @start_time..@end_time)
これにより、結果のないこの SQL 文が生成されます。
SELECT DISTINCT `websites`.* FROM `websites` WHERE `websites`.`device_id` = 2 AND (`websites`.`created_at` BETWEEN '16:10:00' AND '21:10:00')
しかし、created_at フィールドに時間関数を追加すると、正常に動作します。
SELECT DISTINCT `websites`.* FROM `websites` WHERE `websites`.`device_id` = 2 AND (time(`websites`.`created_at`) BETWEEN '16:10:00' AND '21:10:00')
これを行うための最良のRailsの方法は?