在模型规范中验证没有数据库的唯一性

时间:2012-10-29 23:51:44

标签: ruby-on-rails-3.1 mongoid activemodel

我的模型看起来像这样:

class User
   include Mongoid::Document

   field :email

   validate :email, presence: true, uniqueness: true
end

我的测试看起来像......

it { User.new.should_not be_valid }
it { FactoryGirl.build(:user).should be_valid }
it { should validate_presence_of :email }
it { should validate_uniqueness_of :email }

在调用.valid?方法时,这两个都想要访问数据库。有什么事情我可以抽象出来吗?唯一性验证器已经过很多其他人的彻底测试,因此上面的最后一行对我来说已经足够了。

如果我必须在模型规范中运行数据库,那就没什么大不了的了,但如果可能的话我宁愿避免使用它。

1 个答案:

答案 0 :(得分:0)

.valid?方法应该仍然可以使用ActiveModel,我不太确定Mongoid包含什么,但ActiveModel你必须有include ActiveModel:Validations

这可能不太清楚,但ActiveModel不会尝试命中数据库。