teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

updated_atだと保存時に保存日時になってしまうのでupdate_atに変更。

2015/08/04 02:27

投稿

rifuch
rifuch

スコア1901

answer CHANGED
@@ -1,27 +1,33 @@
1
1
  通知する必要が無ければ、cronもwheneverも使う必要はないでしょう。
2
2
 
3
- orderにupdated_at属性でも作っておいて、
3
+ orderにupdate_at属性でも作っておいて、
4
4
  ```Ruby
5
5
  # shop側でorderを閲覧するメソッドで事前判定
6
6
  if order.status == 'review' && order.updated_at < 10.days.from_now
7
7
  order.status = 'reject'
8
+ order.update_at = order.update_at + 10.days
8
9
  order.save
9
10
  end
10
11
 
11
12
  # userが新しくorderするメソッドで事前判定
12
- newest_order = user.orders.order(Order.arel_table[:updated_at].desc).first
13
+ newest_order = user.orders.order(Order.arel_table[:update_at].desc).first
13
14
  order_available = false
14
- if (newest_order.status == "review" && newest_order.updated_at < 13.days.from_now)
15
+ if (newest_order.status == "review" && newest_order.update_at < 10.days.from_now)
15
16
  newest_order.status = 'reject'
17
+ order.update_at = order.update_at + 10.days
16
18
  newest_order.save
19
+ if (newest_order.update_at < 3.days.from_now)
17
- oder_available = true
20
+ oder_available = true
21
+ end
18
22
  elsif (newest_order.status == "accept" || newest_order.status == "reject") &&
19
- newest_order.updated_at < 3.days.from_now
23
+ newest_order.update_at < 3.days.from_now
20
24
  order_available = true
21
25
  end
22
26
  unless oder_available
23
27
  flash[:error] = "まだ注文できません。"
24
28
  end
29
+
30
+ ## oder_update_atは自動で更新されないので、ステータス変更のたびに日付を更新する必要はある
25
31
  ```
26
32
  こんな感じでいいのでは?
27
33