Имитировать временную метку в seeds.rb

Я хочу заполнить базу данных образцами данных, и по какой-то причине я также хочу имитировать created_at. Это мой seeds.rb:

9.downto(1) do |i|
 product = Product.new(price: 99.99)
 product.created_at = i.days.ago,
 product.save!
end

В базе данных результат rake db:seed выглядит следующим образом:

---- 2012-03-03 16:50:30.316886000 Z- 1

когда мне нужно

2012-03-03 16:50:30.316886000 Z- 1

Как избежать этих ---- символов в результате?

(db: sqlite3)

обновление: Я просто обнаружил, что, когда я использую product.created_at = i.days.ago, в обратном вызове (before_save) created_at составляет Array: [date_value, 1]. Поэтому я могу использовать

before_save { self.created_at = self.created_at[0] }

а затем значение в базе данных будет правильным (без ----), но использование обратных вызовов не похоже на хороший способ.

1 ответ

Проблема заключается в этой строке:

product.created_at = i.days.ago,

Вам нужно избавиться от конечной запятой, поэтому у вас заканчивается массив для created_at. Исправьте это, и вы можете избавиться от обратного вызова before_save.

Изменить: причина, по которой вы получаете ---, в том, что любой ORM, который вы используете, пытается сериализовать массив и превращать его в YAML.

licensed under cc by-sa 3.0 with attribution.