非常に基本的なことだと思いますが、何故か新規model
がcreate
されません。
原因として考えられるのは、migration file
は日時をdatetime
としている一方で、
入力の便宜上form
ではday part
とtime part
に分けています。ただし、その為の処理はしっかり書けているとと毛のですが、原因がわかりません。
ruby
1##tender model 2 3id :bigint(8) not null, primary key 4seller_id :bigint(8) not null 5starts_at :datetime not null 6ends_at :datetime not null 7status :string default("draft"), not null 8created_at :datetime not null 9updated_at :datetime not null 10 11 12class Tender < ApplicationRecord 13 belongs_to :seller 14 15 STATUS_VALUES = %w(draft ready ongoing finished) 16 17 validates :starts_at, presence: true 18 validates :ends_at, presence: true 19 validates :status, inclusion: {in: STATUS_VALUES} 20 21 scope :open, -> { where(status: "ready")} 22 23 before_save do 24 if starts_at_date_part && starts_at_time_part 25 self.starts_at = "#{starts_at_date_part} #{starts_at_time_part}" 26 end 27 28 if ends_at_date_part && ends_at_time_part 29 self.ends_at = "#{ends_at_date_part} #{ends_at_time_part}" 30 end 31 end 32 33 attr_writer :starts_at_date_part, :starts_at_time_part, 34 :ends_at_date_part, :ends_at_time_part 35 36 def starts_at_date_part 37 @starts_at_date_part ||= starts_at&.strftime('%Y-%m-%d') 38 end 39 40 def starts_at_time_part 41 @starts_at_time_part ||= starts_at&.strftime('%H:%M') 42 end 43 44 def ends_at_date_part 45 @ends_at_date_part ||= ends_at&.strftime('%Y-%m-%d') 46 end 47 48 def ends_at_time_part 49 @ends_at_time_part ||= ends_at&.strftime('%H:%M') 50 end 51 52end 53 54 55##Controller 56 def new 57 @tender = Tender.new 58 time0 = Time.current.beginning_of_day 59 @tender.starts_at = time0.advance(days: 1, hours: 10) 60 @tender.ends_at = time0.advance(days: 3, hours: 15) 61 end 62 63 def create 64 @tender = Tender.new(tender_params) 65 @tender.seller = current_seller 66 if @tender.save 67 binding.pry 68 flash.notice = "入札会を設定しました。" 69 redirect_to :sellers_tenders 70 else 71 render "new" 72 end 73 end 74 75 76##form 77 78<%= form_for @tender, url: :sellers_tenders do |f| %> 79 80 <div class="form-group"> 81 <%= f.label :starts_at_date_part, "入札「開始」日"%> <span class="badge badge-pill badge-danger">必須</span> 82 <div class='input-group'> 83 <div class="input-group-prepend"> 84 <span class="input-group-text"><i class='far fa-calendar-alt'></i></span> 85 </div> 86 <%= f.text_field :starts_at_date_part, class: 'form-control date-picker', required: true %> 87 </div> 88 </div> 89 <div class="form-group" > 90 <%= f.label :starts_at_time_part, "入札「開始」時間"%> <span class="badge badge-pill badge-danger">必須</span> 91 <div class='input-group'> 92 <div class="input-group-prepend"> 93 <span class="input-group-text"><i class='far fa-clock'></i></span> 94 </div> 95 <%= f.text_field :starts_at_time_part, class: 'form-control time-picker', required: true %> 96 </div> 97 </div> 98 99 <div class="form-group" > 100 <%= f.label :ends_at_date_part, "入札「終了」日"%> <span class="badge badge-pill badge-danger">必須</span> 101 <div class='input-group'> 102 <div class="input-group-prepend"> 103 <span class="input-group-text"><i class='far fa-calendar-alt'></i></span> 104 </div> 105 <%= f.text_field :ends_at_date_part, class: 'form-control date-picker', required: true %> 106 </div> 107 </div> 108 <div class="form-group" > 109 <%= f.label :ends_at_time_part, "入札「終了」時間" %> <span class="badge badge-pill badge-danger">必須</span> 110 <div class='input-group'> 111 <div class="input-group-prepend"> 112 <span class="input-group-text"><i class='far fa-clock'></i></span> 113 </div> 114 <%= f.text_field :ends_at_time_part, class: 'form-control time-picker', required: true %> 115 </div> 116 </div> 117 118 <div class="form-group mt-5" > 119 <%= f.submit "入札会を設定する", class: 'btn btn-success' %> 120 </div> 121 122 <% end %> 123
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。