0
現在我正在將日期保存爲mm/dd/yyyy格式的字符串,但想要轉換爲date_select,但由於某種原因我一直收到錯誤。rails date_select
這裏是我使用
形式
<%= f.date_select :start_date %>
模型
validates :start_date, :presence => true
的代碼,但我從我的控制器錯誤消息,它不適合PARAMS。
現在我正在將日期保存爲mm/dd/yyyy格式的字符串,但想要轉換爲date_select,但由於某種原因我一直收到錯誤。rails date_select
這裏是我使用
形式
<%= f.date_select :start_date %>
模型
validates :start_date, :presence => true
的代碼,但我從我的控制器錯誤消息,它不適合PARAMS。
這是由於Rails自動查看數據庫列來確定要存儲哪種類型的對象的方式。在這種情況下,Rails正在尋找一個Datetime列來與date_select幫助器一起使用,但是它正在尋找一個varchar列。
我會跑遷移砸START_DATE列,並將它重新添加爲datetime列,像這樣
要生成一個新的遷移:
rails generate migration [name of your migration]
你的情況是這樣的:
rails generate migration change_start_date_column_to_timestamp
這將在您的RAILS_ROOT/DB /遷移文件夾中的文件,它看起來像:
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
然後,當軌拉從數據庫中的數據,它會自動將其轉換爲Ruby的Time對象。
警告一句話...這會破壞start_date字段中的數據。所以如果你有預先存在的信息需要保存,你需要做一些更復雜的事情。
我得到bash remove_column命令未找到 – tomciopp 2011-03-24 03:16:13
您需要從遷移內部運行它,可以在這裏找到相關文檔(http://api.rubyonrails.org/classes/ActiveRecord/Migration.html) – jaredonline 2011-03-24 03:30:56
我跑鋼軌生成遷移remove_column(:table_name,:start_date)是不是這樣? – tomciopp 2011-03-24 03:40:59