2012-03-03 2 views
2

я не уверен, как это сделать в рельсах (может быть, его общая тему, но я даже не уверен, если название правильно)Рельсы - Как сохранить каждое обновление элемента

У меня есть таблица продуктов с этим полем

  • Имя
  • Количество
  • Цена
  • Размер

и столбцы, которые предоставляют рельсы (id, created_at, updated_at)

Эта таблица будет периодически обновляться (скажем, каждый день или около того), но я хочу сохранить КОЛИЧЕСТВО, которое ДОБАВЛЯЕТСЯ, и дату/время актуализации (ОБНОВЛЕНИЕ).

Я не уверен, что это проблема дизайна или что-то еще.

Есть ли способ, которым можно справиться с этим?

Заранее благодарен

Javier QQ.

+0

Вы хотите сохранить количество добавленных за каждый раз, когда вы его обновите? Или просто самый последний? – varatis

+0

да, скажем, у меня есть 5 предметов первого продукта, через час я добавляю 10 предметов и на следующий день 20. Я хочу хранить каждое добавляемое количество, а также время – JavierQQ23

ответ

1

Я не уверен, что это именно то, что вы ищете ... но вы можете попробовать papertrail Gem. Он хранит каждое обновление вашей модели, и вы можете легко шагнуть назад или вперед во времени через них, чтобы осмотреть вашу модель и какие поля изменились, так что это звучит так, будто это было бы идеально для того, что вы имеете в виду.

+0

Похоже, что «контроль версий» пункт это ?. Я хочу сохранить каждое обновление, потому что тогда я собираюсь показать графику, которая показывает каждый день, когда элемент был обновлен. Кажется, что это то, что я ищу, но мне было интересно, если бы вы использовали в подобном случае :) – JavierQQ23

+0

Я искал больше и да его полезный https://www.ruby-toolbox.com/categories/Active_Record_Versioning. Большое спасибо =) – JavierQQ23

2

Учитывая, что вы сказали в своих комментариях, почему бы вам просто не создать новый стол, скажем, таблицу «Сток». Каждый запас имеет два поля (в дополнение к умолчанию created_at и updated_at): количество и item_id.

Всякий раз, когда вы хотите обновить элемент с новым количеством в способе обновления (или метод акции, то, что это) вы делаете:

Stock.create(:item_id => @item.id, :quantity => params[:quantity]) 

Это также гарантирует, что вы знаете, когда был добавлен запас, потому что Rails автоматически отслеживает, когда был создан этот запас.

+0

Я на самом деле думал, что создаю еще один стол, который сохранит его, как вы упомянули, но, возможно, у рельсов есть какой-то «специальный» метод, который я не знаю :) – JavierQQ23

+0

И посмотреть, сколько у вас предметов на складе вы можете просто используйте такую ​​функцию, как 'Stock.sum (: quantitiy, conditions: ['item_id =?', myItem.id])' – klaustopher

+0

@ JavierQQ23 Nope. Нет специальных методов – varatis

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