Ruby on rails属性验证,模型中的方法

时间:2011-06-10 19:33:31

标签: ruby-on-rails validation attributes

我有模型项目并验证:

validates_presence_of :name, :position, :tel

Project还有另一个属性,例如:flag。 我想这样做: 如果输入:name,:position,:tel,则:flag = true, 如果未指定其中一个属性,则:flag = false。

我怎样才能做到?在模型?

1 个答案:

答案 0 :(得分:1)

您声明验证的方式,除非用户输入全部三个,否则模型甚至不会保存,因此将flag设置为false是没有意义的。

话虽这么说,如果你想根据其他属性的值在保存时设置一个属性,你可以使用callback hooks之一,如before_save。

class Project << ActiveRecord::Base
  before_save :set_flag

  protected

  def set_flag
    self.flag = (self.name.blank? || self.position.blank? || self.tel.blank?) ? false : true
  end
end