我設計的應用程序,爲學生和分類,類別包括如何
Level 100
Level 200
Level 300
Level 400
Level 500
每個用戶都屬於我想這是什麼類別
的只有一個自動upgarde在軌類別達到的目標是任何一個類別(例如(100級))下的學生在365天后都會自動晉級到下一個類別(即200級別) 以及如果學生達到最高級別即500L,促銷停止
任何方式來做到這一點?
我設計的應用程序,爲學生和分類,類別包括如何
Level 100
Level 200
Level 300
Level 400
Level 500
每個用戶都屬於我想這是什麼類別
的只有一個自動upgarde在軌類別達到的目標是任何一個類別(例如(100級))下的學生在365天后都會自動晉級到下一個類別(即200級別) 以及如果學生達到最高級別即500L,促銷停止
任何方式來做到這一點?
你必須寫這個任務,與代碼類似下面
User.all.each do |u|
if ((Time.now - u.created_at) > 365.days) && u.level == Level 100)
u.level = Level 200
if ((Time.now - u.created_at) > 365.days) && u.level == Level 200)
u.level = Level 300
if ((Time.now - u.created_at) > 365.days) && u.level == Level 300)
u.level = Level 400
if ((Time.now - u.created_at) > 365.days) && u.level == Level 400)
u.level = Level 500
end
我不喜歡太多的IF
和ELSE
。本來可以用類似製作Level Order映射的方式完成它,也可以從你的數據庫中取出,或者根據你是否有位置列來做。
class User < ActiveRecord::Base
LEVEL_ORDER = ["Level 100","Level 200","Level 300","Level 400", "Level 500"]
def assign_next_level
if (Time.now - created_at) > 365.days
self.level = next_level
end
end
def next_level
index = LEVEL_ORDER.find_index(level)
LEVEL_ORDER(index+1)
end
end
#This will iterate over user and check if created > 365 will call the instance
# method assign_next_level. Will save you from Harcoding Level
User.all.each do |user|
user.assign_next_level
end
什麼是實際問題?改變類別?確定是否已經過了365天?自動執行任務? – Stefan 2014-10-02 12:55:36
問題是自動改變CATEGORY – Kadismile 2014-10-02 13:09:08
http://theoatmeal.com/pl/minor_differences/capslock – Stefan 2014-10-02 13:15:06