2

我目前正在做的事情如下:

validates :new_pass,
          :presence => {:if => :new_record?},
          :confirmation => {:if => :password_not_blank?},
          :length => {:within => 6...64, :if => :password_not_blank?}

def password_not_blank?
  !new_pass.blank?
end

但这不是 DRY,我敢打赌,如果属性不存在,有一种方法可以跳过验证。

另外,没有任何 DSL 方法来验证吗?我认为它比在哈希中实现逻辑更干净......

-- 编辑,谢谢^^ --

这就是我现在得到的:

validates :new_pass,
          :allow_blank => {:on => :update},
          :presence => {:on => :create},
          :confirmation => true,
          :length => {:within => 6...64}

只是为了记录,所以没有人担心(?),这是一个虚拟属性,实际密码用 before_save 加密,检查 :new_pass 不是空白。

4

2 回答 2

1

可能感兴趣的:allow_nil标志。validates像这样的东西应该工作:

validates :new_pass,
          :allow_nil => true,
          :presence => {:if => :new_record?},
          :confirmation => {:if => :password_not_blank?},
          :length => {:within => 6...64, :if => :password_not_blank?}
于 2011-08-26T04:47:45.980 回答
0
validates :new_pass,:presence => true ,:if => :new_record?
validates :confirmation ,:length =>:within => 6...64, :if => :password_not_blank?
于 2011-08-26T05:15:18.533 回答