作者tonytonyjan (南洋大兜蟲)
看板Ruby
標題[問題] Rails: Modify data before saveing
時間Tue Jan 10 18:53:59 2012
環境:
Ruby 1.9.3p0
Rails 3.2.0.rc1
狀況:
這個問題最常見的範例就是將資料轉成大小寫
例如我想儲存 "TONYTONYJAN" 到某個 model 的某個 column(string)
但是實際儲存會變成 "tonytonyjan"
我想到三個解法:
1. override assign method
例如:
class User < ActiveRecord::Base
def username=(val)
write_attribute(:username, val.downcase)
end
end
2. 使用 Observer
3. 實做 before_save
我想請教各位前輩:
a. 如果是你們,會使用什麼方法來解決這個問題?
b. 推薦什麼方法和不推薦什麼方法
c. 是否有其他更好得解法?
不吝賜教
萬分感謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.246.1
推 godfat:我會用 before_save 01/10 21:05
→ ayamomiji:我是用 before_validation, 因為還蠻常做 strip 這種會 01/14 01:04
→ ayamomiji:改變字串長度影響 validates_length_of 的這類事情 01/14 01:04