質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

デバッグ

デバッグはプログラムのバグや欠陥を検知し、開発中のバグを取り除く為のプロセスを指します。

Q&A

1回答

731閲覧

herokuの本番環境でcurrent_sign_in_at.strftimeが使えない

moto12

総合スコア15

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

デバッグ

デバッグはプログラムのバグや欠陥を検知し、開発中のバグを取り除く為のプロセスを指します。

0グッド

0クリップ

投稿2021/01/10 01:45

前提・実現したいこと

作成したアプリケーションをherokuにデプロイし、本番環境でエラーがでるページがあります。具体的には、current_sign_in_at.strftimeを書いているページです(current_sign_in_at.strftimeの記述を消せばエラーは出ない)。

しかし、最終ログインの表示をどうしてもさせたいのでcurrent_sign_in_at.strftimeを使いたいのですが、どのようにすればよろしいでしょうか。ログは以下に載せておきます。

#####heroku logs コマンド実行後のログ
イメージ説明

#####herokuにデプロイ後のログ
イメージ説明
イメージ説明
![引用テキスト]
イメージ説明

該当のソースコード

rails

1【エラーが出るページ】 2 3<% @users.each do |user|%> 4 <div class="hidden wid list1-1"> 5 <% if user.grade == 1 && user.class_number == 1%> 6 <%= user.student_number%>番 7 <%=link_to new_user_diary_path(user) do %> 8 <span class="user-name"><%= user.name%></span> 9 <% end %> 10 <% @login = user.current_sign_in_at.strftime('%m月%d日 %H:%M') if user && user.created_at%> 11 <%if @login < Date.current.ago(6.days || 7.days || 8.days)%> 12 <span class="login-day">5日間以上</span> 13 <%elsif @login < Date.current.ago(5.days)%> 14 <span class="login-day">5日前</span> 15 <%elsif @login < Date.current.ago(4.days)%> 16 <span class="login-day">4日前</span> 17 <%elsif @login < Date.current.ago(3.days)%> 18 <span class="login-day">3日前</span> 19 <%elsif @login < Date.current.ago(2.days)%> 20 <span class="login-day">2日前</span> 21 <%elsif @login < Date.current.ago(1.days)%> 22 <span class="login-day">1日前</span> 23 <%elsif @login = Date.today%> 24 <span class="login-day-today"></span> 25 <%end%> 26 <% end %> 27 </div> 28 <% end %>

user.rbにtrackableは追加しています。

class User < ApplicationRecord devise :database_authenticatable, :registerable, :trackable, :recoverable, :rememberable, :validatable 省略 end

usersのマイグレーションファイルでtrackableをコメントアウト解除しています。

class DeviseCreateUsers < ActiveRecord::Migration[6.0] def change create_table :users do |t| ## Database authenticatable t.string :name, null: false t.string :genre, null: false t.integer :grade, null: false t.integer :class_number, null: false t.integer :student_number, null: false t.string :email, null: false, default: "" t.string :encrypted_password, null: false, default: " 省略 # Trackable t.integer :sign_in_count, default: 0, null: false t.datetime :current_sign_in_at t.datetime :last_sign_in_at t.string :current_sign_in_ip t.string :last_sign_in_ip

試したこと

heroku run rails db:migrate

補足情報(FW/ツールのバージョンなど)

Rails 6.0

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

@usersのなかに、未だ一度もloginしていない人が居るのでしょう。
<% @login = user.current_sign_in_at.strftime('%m月%d日 %H:%M') if user && user.created_at%>
の if の部分を if user.current_sign_in_at にしてください。

@usersはDBから検索したのでしょうから、userがnilになることは無いので、userの確認は不要です。
DBにsaveされているのですから、created_atは必ず設定されていますから、その確認も不要です。

投稿2021/01/10 10:37

winterboum

総合スコア23567

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問