いつもお世話になっております。
美容院の予約システムをRuby on Railsで開発しています。
そこで、 美容院のオーナーが指定した営業日の可能時間をavailable_times
の
配列で出力したいと考えているのですが、データの子要素を定義するやり方がいまいち分からず
困っています。
ロジックは完成しているのですが、モデルから出力ができません。
開発環境:
Ruby 2.5.0
Ruby on Rails 5.2.1
エラー
NameError: undefined local variable or method `booking' for #<Booking:0x00007fc388039280> from /Users/xxxx/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/activemodel-5.2.1/lib/active_model/attribute_methods.rb:430:in `method_missing'
models/booking.rb
Ruby
1class Booking < ApplicationRecord 2 def available_times 3 4 ## ここが定義できない 5 # 一人当たりの時間 6 interval = booking.time 7 # 営業開始時間 8 begin_time = booking.start_at 9 # 営業終了時間 10 end_time = booking.end_at 11 available_times = [] 12 13 interval_time = interval * 60 14 15 begin_datetime = Time.parse(begin_time) 16 end_datetime = Time.parse(end_time) 17 18 times_count = (begin_datetime - end_datetime).to_i.abs/interval_time if begin_datetime < end_datetime 19 times_count = ((begin_datetime - Time.parse('24:00')) + (Time.parse('0:00') - end_datetime) ).to_i.abs/interval_time if begin_datetime > end_datetime 20 times_count+= 1 21 22 times = times_count.times.map.each_with_index {|i| Time.parse((begin_datetime + interval_time*i).to_s)} 23 24 times.each_with_index do |val| 25 available_times.push "#{a} #{val.strftime("%H:%M:%S")}" 26 end 27 28 # [ 29 # DateTime.parse('2017-10-09 10:00'), 30 # DateTime.parse('2017-10-12 11:00'), 31 # DateTime.parse('2017-10-13 11:00'), 32 # ] 33 end 34end
コメントアウトしている配列では取得できています。
time
、start_at
、end_at
はそれぞれカラムの子要素となります。
モデル内でこのような書き方をするのは好ましくないのでしょうか。
すみませんがご助言いただければと思います。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/13 09:48
2018/10/13 09:52 編集
2018/10/13 10:15 編集