2016-01-21 3 views
0

Итак, я новичок в рельсах, так что это, вероятно, новичок вопрос, но я не нашел никакой помощи для этой проблемы в любом месте ...Сохранить дату в базе данных с рельсами

Скажем, у меня есть база данных содержащие «рассказы» здесь. Только столбец являются заголовок и метка время:

create_table :stories 
    add_column :stories, :title, :string 
    add_column :stories, :date, :timestamp 

У меня есть форма в моих взглядах, так что я могу создать новую историю, inputing названия:

<%= form_for @story do %> 
    <input type="text" name="title" value="Story title" /> 
    <input type="submit" value="Start a story" /> 
<% end %> 

У меня есть это на моем контроллере:

def create 
    Story.create title:params[:title] 
    redirect_to "/stories" 
    end 

И модель «История» отлично работает. Итак, когда я создаю новую историю, все выглядит отлично. Моя цель, однако, , чтобы иметь возможность сортировать рассказы по дате (отсюда: дата отметки времени). Как я могу сделать так, чтобы текущая дата хранилась в метке даты: date, поэтому я могу сортировать свои данные по дате?

Большое спасибо заранее

+0

Пожалуйста, используйте английскую пунктуацию, когда вы пишете на английском языке. – sawa

+0

Извините, старые привычки трудны ^^ –

ответ

0

Без того, чтобы воссоздать таблицу с нуля, в терминальной перспективе «рельсы г миграции add_timestamps_to_stories» - найти только что созданный файл миграции, убедитесь, что он имеет следующее:

def change 
    add_timestamps :stories 
end 

Run грабли БД: мигрировать

Это добавляет два новых столбца created_at и updated_at, которые вы сможете отсортировать по созданному с этой точки. Обязательно обновите предыдущие записи, у которых нет даты created_at (так как это будет nil), поэтому вы не столкнетесь с ошибками.

+0

Это на самом деле то, что мне подходит лучше всего, я думаю. Большое спасибо ! –

0
def create 
    Story.create(title:params[:title], date: DateTime.now 
    redirect_to "/stories" 
end 
+1

это только если вы хотите создать историю с датой во время создания. Это также столбец по умолчанию в модельных миграциях '(: created_at)' –

+0

Я не знал этого метода. Спасибо ! –

1

Если вы хотите, чтобы отслеживать создание метки вашей истории записей, вы можете сделать это, как это в вашей миграции:

create_table do |t| 
    t.string :title 
    t.timestamps 
end 

В Помимо поля заголовка, это создало бы поля «created_at» и «updated_at», которые для вас обрабатывает ActiveRecord, как предложил Эндрю Ким.

+0

Большое спасибо за объяснение =) –

Смежные вопросы