Ruby on rails rails表单中的当前日期

Ruby on rails rails表单中的当前日期,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在学习rails,并在书的另一部分进行探索,随着知识的增长,我创建了一个简单的应用程序,并增加了功能。我正在写一个简单的博客应用程序,我有一个名为date added的字段,我不希望它成为一个字段,我希望它从服务器获取日期,并将其自动放入数据库。我该怎么做呢?我正在考虑一个隐藏字段,但不确定如何处理日期并将其插入隐藏字段。这是错误的做事方式吗? 提前感谢,, Dean我不会使用隐藏字段,因为即使它是隐藏的,用户也可以操纵它。我认为解决此问题的最佳方法是,在保存对象之前,忽略表单中的日期,并在


我正在学习rails,并在书的另一部分进行探索,随着知识的增长,我创建了一个简单的应用程序,并增加了功能。我正在写一个简单的博客应用程序,我有一个名为date added的字段,我不希望它成为一个字段,我希望它从服务器获取日期,并将其自动放入数据库。我该怎么做呢?我正在考虑一个隐藏字段,但不确定如何处理日期并将其插入隐藏字段。这是错误的做事方式吗?
提前感谢,,

Dean

我不会使用隐藏字段,因为即使它是隐藏的,用户也可以操纵它。我认为解决此问题的最佳方法是,在保存对象之前,忽略表单中的日期,并在控制器操作中将日期添加到您的模型中:

def SomeController
  #...
  def create
    @model = Model.new params[:model]
    @model.date_field_name = Time.now
    if @model.save
      # whatever should be done if validation passes or
      redirect_to @model
    else
      # whatever should be done if validation fails or
      render :new
    end
  end
  #...
end

但是您不必做任何事情,因为RubyonRails在上提供了两列
created\u和
updated\u
<创建对象时将设置“代码>创建位置”
,每次更新此对象时将设置“代码>更新位置”。

在Rails中,如果您为模型属性指定了某些名称,则ActiveRecord将为其提供特殊行为。有四种不同的与日期/时间相关的日期/时间:

  • created\u on
    :自动设置为记录的创建日期
  • created\u at
    :自动设置记录的创建日期和时间
  • updated\u on
    :自动设置为记录的更新日期
  • updated\u at
    :自动设置记录更新的日期和时间
通常,在/
处创建的
在处更新的对会通过模型关联的
t.timestamps
声明自动添加到模型中。

以下是显示当前日期的表单视图(新):

<% form_for(@recipe) do |f| %>
  <%= f.error_messages %>

  <p>
    <%= f.label :title %><br />
    <%= f.text_field :title %>
  </p>
  <p><b>date</b><br/>
    <%= f.datetime_select :date %>
  </p>
  <p>
    <%= f.label :instructions %><br />
    <%= f.text_area :instructions %>
  </p>
  <p>
    <%= f.submit 'Create' %>
  </p>
<% end %>

<%= link_to 'Back', recipes_path %>

将对象添加到数据库时是否在设置时更新?我想知道我是否可以将视图更改为order by updated_at?是的,当对象添加到数据库时,
updated_at
created_at
def new
  @recipe = Recipe.new

  respond_to do |format|
    format.html # new.html.erb
    format.xml  { render :xml => @recipe }
  end
end