Re: [問題] 請問 validates_presene_of 的問題?

看板Ruby作者 (shadow)時間17年前 (2007/05/25 14:28), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
現在的作法是這樣。 如果只設定 :on => :create 的話,在 update 的時候就無法做 validations, 不太理想。改用 :if 參數來判斷是否該做密碼的 validation。 在 model 裡... validates_presence_of :password, :password_confirmation, :if => :validates_password? ... private def validates_password? new_record? || !password.blank? # 新紀錄或是非新紀錄但有輸入密碼欄位時進行驗證 end 但是還有一個問題,即使不做 validation,ActiveRecord 還是會把空字串當成 密碼存進去,所以我把 password= 這個 method 修改一下 def password=(pwd) return if !new_record? && pwd.blank? #如果不是新紀錄且輸入密碼為空,不設定密碼直接return ... 設定 salt 及 hash 的動作 ... end 在 controller 裡: def update @user = User.find(params[:id]) @user.update_attributes(params[:user]) ... end 測試一下好像沒什麼問題,不過覺得作法有點醜 @@ 還有更好的方法嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.69.49.253

05/25 15:53, , 1F
像我之前是把帳號跟個人資料分成兩個model XD
05/25 15:53, 1F
※ 編輯: suomax 來自: 218.175.74.124 (05/25 22:06)
文章代碼(AID): #16Le8Dji (Ruby)
文章代碼(AID): #16Le8Dji (Ruby)