新手问题 请问 Validations 可以只验证一个 form 提交的内容,或者指定验证吗?

QueXuQ · 2013年02月02日 · 最后由 QueXuQ 回复于 2013年02月02日 · 2191 次阅读
class Person < ActiveRecord::Base
  # it will be possible to update email with a duplicated value
  validates :email, :uniqueness => true, :on => :create

  # it will be possible to create the record with a non-numerical age
  validates :age, :numericality => true, :on => :update

  # the default (validates on both create and update)
  validates :name, :presence => true, :on => :save
end

我看文档上,指定验证好像就只能有 update,create 和 save 三种情况。 可是我的一个字段,在某个 form 中需要为正数,另一个 form 却要为负数,请问验证可以单独进行验证的么? 目前我只想到写前端验证的方法,但是我用了gem 'client_side_validations'怕写的前端会有冲突,save(:validate => false)似乎也不合适。 请问一般各位怎么处理这个问题的呢?

#1 楼 @blacktulip #2 楼 @kenshin54 恩。看了那个 stackoverflow 的回答就搞懂了。

validates_presence_of :something, :if => :special?

private

def make_sepcial
  @special = true
end

def special?
  @special
end

调用:

s = SomeModel.new
s.make_special    #方法为private,似乎调用不到哦

google 了一下的,可是不知道用英语怎么表达,查都查不到,所以求救了。 谢谢各位哦。— 3 —

需要 登录 后方可回复, 如果你还没有账号请 注册新账号