首页 > 解决方案 > Rails 6 中的日期时间比较

问题描述

我构建了这个简单的应用程序是为了更适应 Rails。它在开发中运行良好,但是当我部署到 Heroku 时,似乎 DateTime 比较不再有效。提交后,即使将来输入时间,我也会一直点击“无效的交货时间”。

我正在使用 Postgres 数据库,下面将包含的表单使用带有 date_time 字段的 form_tag 助手。我还在下面包含了我的架构。

# controllers/messages_controller.rb
class MessagesController < ApplicationController
  def new
    @message = Message.new
  end

  def create
    @message = Message.new(message_params)

    if @message.save
      if @message.delivery_time > DateTime.now
        UserMailer.scheduled_email(@message).deliver_later(wait_until: @message.delivery_time)
        flash[:notice] = "Your message was scheduled :)"
      else
        flash[:notice] = "invalid delivery time, can't schedule :("
      end
    else
      flash[:notice] = "Unable to schedule message :("
    end

    redirect_to root_path
  end

  private

  def message_params
    params.require(:message).permit(:content, :email_address, :delivery_time)
  end
end

# views/messages/new.html.erb
<div class="container">
    <div class="form">
      <h1>write to future you</h1><br>
      <%= form_with model: @message, url: '/messages' do |f| %>
        <%= f.label "Message" %><br>
        <%= f.text_area :content, placeholder: "Future John - \n\nI hope you invested in WUPHF...", required: true %><br><br>

        <%= f.label "Email" %><br>
        <%= f.text_field :email_address,  placeholder: "johnlegend@mac.com", required: true, autocomplete: "off" %><br><br>

        <%= f.label "Delivery" %><br>
        <%= f.datetime_field :delivery_time, required: true %><br><br>

        <%= f.submit "SEND IT", data: {confirm: "Are you sure you want to schedule this message?"} %>

      <% end %>
      <p><%= flash[:notice] %></p>
    </div>
</div>

# db/schema.rb
ActiveRecord::Schema.define(version: 2020_09_27_171654) do

  # These are extensions that must be enabled in order to support this database
  enable_extension "plpgsql"

  create_table "messages", force: :cascade do |t|
    t.string "email_address"
    t.text "content"
    t.datetime "delivery_time"
  end

end

任何有关如何排除故障的建议将不胜感激。

标签: ruby-on-railsrubypostgresqlheroku

解决方案


推荐阅读