作者suomax (shadow)
看板Ruby
标题Re: [问题] 请问 validates_presene_of 的问题?
时间Fri May 25 14:28:28 2007
现在的作法是这样。
如果只设定 :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
1F:推 deduce:像我之前是把帐号跟个人资料分成两个model XD 05/25 15:53
※ 编辑: suomax 来自: 218.175.74.124 (05/25 22:06)