zetachang/ntu_scheduler — Issue #26: schedule_sets controller應該整個重修
Author: raincole
Created: 2011-12-03 21:04:12+00:00
State: open

抱歉，當時實在是腦筋不清楚又偷懶，現在很後悔

確立一下一貫的方針：

1. 冪等操作，如PUT或DELETE，重做兩次應該要出現一模一樣的結果。

譬如把schedule 1加入schedule_set 1，然後再加入一次，兩次應該都要出現「加入成功」，而非一次為「加入成功」、一次為「已加入」。(我確認過Gmail和Google Reader都是這樣實作的)

2. 可以用前端直接提示使用者的操作錯誤，就不要靠後端傳錯誤訊息，直接500就好。

譬如「schedule_set的名字不能為空」這種校驗，可以透過javascript在前端檢測，所以如果後端收到名字為空的請求就直接吐500即可。使用者硬要繞過javascript檢測是他的事。

3. 找不到要操作的對象時，必須回傳一個json，{"status":"ERROR", "message":"對應的錯誤訊息"}，**切勿回傳200以外的HTTP code**。如果是用find找必須要rescue。

譬如使用者明明沒有這個schedule_set卻嘗試要把schedule加進去(有可能是他在另一個瀏覽器刪掉了)，應該回傳：

```
{"status":"ERROR", "message":"此課表集已被刪除"}
```

4. 儘可能不要主動raise任何東西(re-raise除外)。