[問題] Rails: Modify data before saveing

看板Ruby作者 (南洋大兜蟲)時間13年前 (2012/01/10 18:54), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串1/1
環境: 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

01/10 21:05, , 1F
我會用 before_save
01/10 21:05, 1F

01/14 01:04, , 2F
我是用 before_validation, 因為還蠻常做 strip 這種會
01/14 01:04, 2F

01/14 01:04, , 3F
改變字串長度影響 validates_length_of 的這類事情
01/14 01:04, 3F
文章代碼(AID): #1F31ZCIR (Ruby)
文章代碼(AID): #1F31ZCIR (Ruby)