rails date_select - PullRequest
       6

rails date_select

0 голосов
/ 24 марта 2011

Сейчас я сохраняю свои даты в виде строки в формате мм / дд / гггг, но хочу преобразовать в date_select, но по какой-то причине я продолжаю получать ошибки.

Вот код, который я использую
форма

 <%= f.date_select :start_date %>

модель

 validates :start_date, :presence => true

но я получаю сообщение об ошибке от моего контроллера о том, что он не соответствует параметрам.

1 Ответ

1 голос
/ 24 марта 2011

Это связано с тем, что 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.Поэтому, если у вас есть ранее существующая информация, которую необходимо сохранить, вам нужно сделать что-то более сложное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...