今日保存されたレコードを取得するには? 【Rails】

実装したい仕様

・newアクション内で、今日保存されたレコードがあれば、indexアクション

要は、その日にログインしているユーザが筋トレしていたら

「just do it」ページではなく、「you did it」というページを遷移したいということです。

 

手順

  1. trainingモデルにscopeで今日のレコードを取得するメソッドを定義
    特定の日に保存されたレコードを取得するscopeの設定方法
    https://easyramble.com/get-today-record-with-rails-activerecord.html

    scopeとは?

    https://qiita.com/ozin/items/24d1b220a002004a6351

  2. 1で設定したスコープをtrainings_controller.rbで呼び出す。

 

training.rb

class Training < ApplicationRecord
belongs_to :user

scope :created_today, -> { where("created_at >= ?", Time.zone.now.beginning_of_day) }
 
end

 

trainings_controller.rb

def new
@user = current_user
@training = Train.created_today.find_by(user_id: current_user.id)
if @training.present?
redirect_to action: :index
end
end

 

以上です。

 

全く初めての用語だったのでメンターさんに聞きたくて聞きたくて仕方なかったですが

なんとか自力で、いや先人のプログラマーの有り難い記事のお陰で、笑

なんとか実装することができました。

 

 

実は最初に考えていた実装方法は

日付がかわるとtrainingsテーブルのレコードが全削除される(よって「just do it」ページに遷移される)という方法です。

しかし、調べてみるとめっちゃ難しかったのと後々そのレコードを使用したい場合があるかもしれないので今回紹介した方法に変更しました。