Re: [問題] 請問 validates_presene_of 的問題?
現在的作法是這樣。
如果只設定 :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
05/25 15:53, 1F
※ 編輯: suomax 來自: 218.175.74.124 (05/25 22:06)
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
Ruby 近期熱門文章
PTT數位生活區 即時熱門文章