簡體   English   中英

rails date_select

[英]rails date_select

現在,我以mm / dd / yyyy的格式將日期保存為字符串,但是想轉換為date_select,但是由於某種原因,我總是遇到錯誤。

這是我正在使用的代碼
表格

 <%= f.date_select :start_date %>

該模型

 validates :start_date, :presence => true

但我從控制器收到一個錯誤,說它不適合參數。

這是因為Rails會自動查看數據庫列以弄清楚哪種類型的對象將存儲在其中。 在這種情況下,Rails正在查找要與date_select輔助程序一起使用的Datetime列,但實際上是在查找varchar列。

我將進行遷移以刪除start_date列,然后將其重新添加為datetime列,如下所示

生成新的遷移:

rails generate migration [name of your migration]

在您的情況下,例如:

rails generate migration change_start_date_column_to_timestamp

這將在您的RAILS_ROOT / db / migrations文件夾中生成一個文件,如下所示:

class ChangeStartDateColumnToTimestamp < ActiveRecord::Migration
  def self.up
  end

  def self.down
  end
end

並且您需要對其進行修改以使其看起來像:

class ChangeStartDateColumnToTimestamp < ActiveRecord::Migration
  def self.up
    remove_column :table_name, :start_date
    add_column :table_name, :start_date, :timestamp
  end

  def self.down
    remove_column :table_name, :start_date
    add_column :table_name, :start_date, :string
  end
end

然后,當rails從數據庫中提取數據時,它將自動將它們轉換為Ruby Time對象。

請注意...這將破壞start_date字段中的數據。 因此,如果您有需要保留的預先存在的信息,則需要做一些更復雜的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM