如何验证具有特定字段的模型的存在性

时间:2010-12-08 08:19:04

标签: ruby-on-rails ruby

如何使用validate_presence_of更新记录值为空的表中的所有字段而不逐个写入所有字段?

2 个答案:

答案 0 :(得分:2)

你的意思是默认值?最简单的方法是在数据库中设置默认值

add_column :posts, :excerpt, :text, :default => "No excerpt available"

validates_presence_of仅检查是否存在值。

您可以选择设置before_validation挂钩:

before_validation :set_values

def set_values
  attributes.each do |attr|
    self.send("#{attr}=".to_sym, 'Default value') if attr.nil?
  end
end

答案 1 :(得分:0)

我认为您不能为此目的使用验证。仅当某个对象以某种方式保存或更新到数据库时才会运行验证,因此如果表中已有一堆记录,然后再写入验证,则根本不会影响现有的数据库记录。除非您尝试再次更新它们。

但是,如果要使用一个数据库查询更新一堆记录,可以使用方法调用update_all。它可能看起来像这样:

Record.update_all "value = 'default_value'", "value IS NULL"