所以,我是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
模特'故事'很好用。 所以,当我创作一个新故事时,一切看起来都很好。然而,我的目标是能够按日期对故事进行排序(因此:日期时间戳)。 如何才能将当前日期存储在:日期时间戳中,以便按日期对项目进行排序?
非常感谢您提前
答案 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),这样您就不会遇到错误。