Ruby on Rails初心者です。
オブジェクトの存在チェックというより、オブジェクトの特定のカラムに対してデータの存在チェックを行いたいです。
【以下に簡単に仕様をご説明させて下さい】
タイムーカードを作っています。
1日2回、出勤時と、退勤時に打刻します。
打刻画面は1つで、出勤と退勤の入力を兼用します。
出勤簿モデルのカラム:出勤日、出社時間、退社時間
【やりたい事】
退社時間が入っているかどうかで
「出勤中」か「退勤済み」を判定したいです。
・行がない→出社前と判断できます
・行はあるが退社時間がnil→出勤中と判断できます
・行があり、退社時間に時刻あり→退社済みと判断できます
以下のようにしましたが、
if @is_workin[:at_finish].nil?
としてカラムの値をチェックしている箇所でエラーになります。
このような場合、どうすべきなのでしょうか?
そもそもrails的でない記述かもしれません。
自信ありません。。。
どんなことでもご指摘、アドバイスいただければ幸いです。
どうぞ宜しくお願い致します。
ruby
1エラーメッセージ 2undefined method `present' for nil:NilClass Did you mean? present? presence 3
ruby
1 def edit 2 3 @employee = Employee.find(current_employee.id) 4 5 @date = Date.today 6 7 @is_workin = TimeCard.find_by(employee_id: current_employee.id, working_date: @date) 8 9 if !@is_workin.nil? 10 if @is_workin[:at_finish].nil? 11 @msg='退社済みです' 12 else 13 @msg= '退社の打刻をします' 14 end 15 else 16 @tm = @employee.time_cards.where(working_date: @date).first_or_initialize 17 @msg = '出社の打刻をします' 18 end 19 20 end 21
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/05 07:58
2017/12/05 08:01