Это связано с тем, что Rails автоматически просматривает столбец базы данных, чтобы выяснить, какой тип объекта будет храниться там.В этом случае Rails ищет столбец Datetime, который будет использоваться вместе с помощником date_select, но вместо этого он находит столбец varchar.
Я бы запустил миграцию, чтобы удалить столбец start_date, и повторно добавитьэто как столбец даты и времени, например,
Для создания новой миграции:
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.Поэтому, если у вас есть ранее существующая информация, которую необходимо сохранить, вам нужно сделать что-то более сложное.