Ruby on rails Rails控制台仅显示Datetime列的日期

Ruby on rails Rails控制台仅显示Datetime列的日期,ruby-on-rails,Ruby On Rails,我的提醒模型中有两个列(日期和邮件日期),它们的列类型为日期时间,如您在我的模式中所见。rb: create_table "reminders", force: :cascade do |t| t.string "name" t.datetime "date" t.boolean "reminder", default: false t.string "repeating" t.boolean "approved" t.boo

我的
提醒
模型中有两个列(
日期
邮件日期
),它们的列类型为
日期时间
,如您在我的
模式中所见。rb

create_table "reminders", force: :cascade do |t|
    t.string   "name"
    t.datetime "date"
    t.boolean  "reminder",      default: false
    t.string   "repeating"
    t.boolean  "approved"
    t.boolean  "gift",          default: false
    t.boolean  "gift_help",     default: false
    t.string   "occasion_type", default: "Other"
    t.integer  "user_id"
    t.datetime "created_at",                      null: false
    t.datetime "updated_at",                      null: false
    t.string   "slug"
    t.datetime "mail_date"
  end
但是,在我的
控制台中,它们仅显示为日期:

[33] pry(main)> Reminder.where(name: "Mentor Call")
  Reminder Load (0.4ms)  SELECT "reminders".* FROM "reminders" WHERE "reminders"."name" = ?  [["name", "Mentor Call"]]
=> [#<Reminder:0x007fe32b13f090
  id: 8,
  name: "Mentor Call",
  date: Thu, 27 Oct 2016,
  reminder: true,
  repeating: "Weekly",
  approved: nil,
  gift: false,
  gift_help: false,
  occasion_type: "Other",
  user_id: 1,
  created_at: Thu, 13 Oct 2016 01:59:57 UTC +00:00,
  updated_at: Fri, 21 Oct 2016 23:47:16 UTC +00:00,
  slug: "mentor-call",
  mail_date: Thu, 27 Oct 2016>]
…由该erb生成:

<% @reminders.each do |o| %>
    <tr>
      <td>
        <%= o.date.try(:to_formatted_s, :long) %>
      </td>
      <td>
        <%= link_to reminder_path(o), style: "color: black" do %>
          <strong><%= o.name %></strong>
        <% end %>
        ...
      <td>
        <% if o.reminder %>
          <%= o.mail_date.try(:to_formatted_s, "%m/%d/%Y") %>
        <% else %>
          None, you're on your own.
        <% end %>
      </td>
    </tr>


...
没有,你只能靠自己了。

我正在尝试创建一个
mailer
,它在
mail\u date
发送,但我认为由于这个
datetime
vs
date
问题,我遇到了麻烦。有人能帮我澄清一下吗?

我怀疑
date
列的名称与Rails或Ruby的名称有冲突。将
日期
列的名称更改为其他名称,如
提醒时间
,这样应该可以做到:

create_table "reminders", force: :cascade do |t|
  t.string   "name"
  t.datetime "remind_at"
  t.boolean  "reminder",      default: false
  # ...
end

如果您将
日期
列调用其他内容,例如
提醒
,会发生什么情况?@mysmallidea,您遵守您的用户名。这完全解决了问题。如果你把它写下来作为一个答案,我会很高兴地选择它。一般来说,我喜欢使用以“\u on”结尾的描述性名称表示日期,以“\u at”结尾的名称表示日期时间。因此,我将使用
mailed\u at
,而不是
mail\u date
。如果我只想知道日期(没有时间),我会叫它
mailed\u on
。对我来说,这读起来更好,并且有助于在我(或其他开发人员)几个月或几年后阅读源代码时通知预期的返回值。
create_table "reminders", force: :cascade do |t|
  t.string   "name"
  t.datetime "remind_at"
  t.boolean  "reminder",      default: false
  # ...
end