Rails 4验证接受空值

时间:2015-11-28 19:18:18

标签: ruby-on-rails ruby-on-rails-4

我有一个与用户模型相关的Dog模型。

class Dog < ActiveRecord::Base
  belongs_to :user

  validates :name, :presence => true

end

创建新狗:

  = form_for([@user, @user.dogs.build]) do |s|
    = render 'shared/dog_form', :s => s

由于某种原因,验证无效。它允许我创建一个新的狗,即使:name值为“”

我在User模型上使用了类似的验证,它工作正常。想法?

2 个答案:

答案 0 :(得分:0)

尝试添加allow_blank: false。虽然presence应该有效。 Presence使用object的blank?方法检查值是nil还是空白。看看下面的代码是否有效。

class Dog < ActiveRecord::Base
  belongs_to :user

  validates :name, presence: true, allow_blank: false

end

答案 1 :(得分:0)

你可以使用strict:true,这会引起你期望的错误。

class Dog < ActiveRecord::Base
  belongs_to :user
  validates :name, presence: { strict: true }
end