使用rails在数据库中保存日期

时间:2016-01-21 21:02:43

标签: sql ruby-on-rails ruby

所以,我是rails的新手,所以这可能是一个新手问题,但我在任何地方找不到任何帮助...

假设我在这里有一个包含“故事”的数据库。唯一的列是标题和时间戳:

  create_table :stories
    add_column :stories, :title, :string
    add_column :stories, :date, :timestamp

我的观点中有一个表单,所以我可以通过输入标题创建一个新故事:

<%= form_for @story do %>
  <input type="text" name="title" value="Story title" />
  <input type="submit" value="Start a story" />
<% end %>

我的控制器上有这个:

  def create
    Story.create title:params[:title]
    redirect_to "/stories"
  end

模特'故事'很好用。 所以,当我创作一个新故事时,一切看起来都很好。然而,我的目标是能够按日期对故事进行排序(因此:日期时间戳)。 如何才能将当前日期存储在:日期时间戳中,以便按日期对项目进行排序?

非常感谢您提前

3 个答案:

答案 0 :(得分:1)

如果您只想跟踪故事记录的创建时间戳,可以在迁移中执行此操作:

create_table do |t|
  t.string :title
  t.timestamps
end

除了你的标题字段,这将创建&#34; created_at&#34;和&#34; updated_at&#34;由ActiveRecord为您处理的字段,如Andrew Kim建议的那样。

答案 1 :(得分:0)

def create
  Story.create(title:params[:title], date: DateTime.now
  redirect_to "/stories"
end

答案 2 :(得分:0)

无需从头开始重新创建表格,在终端运行&rac; g g migration add_timestamps_to_stories&#39;   - 找到新创建的迁移文件,确保它具有以下内容:

def change
  add_timestamps :stories
end

运行rake db:migrate

这会添加两个新列,created_at和updated_at,您可以从该点按created_at排序。请务必更新以前没有created_at日期的记录(因为它不会是nil),这样您就不会遇到错误。