理解validates_associated

时间:2011-05-17 18:03:54

标签: ruby-on-rails unit-testing rspec

根据rails指南,我对validates_associated的理解是,它应该确保相关记录在保存之前是有效的。例如:

class ForumPost < AR:Base
  has_many :replies
end

class ForumPostReply < AR:Base
  validates_length_of :content, :minimum => 20
end

单元测试:

forum_post = Factory.create(:forum_post)
forum_post.replies.build(:content => 'some content')   #content too short, not valid
forum_post.save
forum_post.errors.should be_empty  #empty because reply was not expected to be validated

鉴于我没有指定validates_associated,我是否应该期望此保存失败:在我的ForumPost模型中回复?它似乎保存得很好,这不是我所期望的,因为我没有指定相关的验证。

因此,如果模型的行为方式没有指定validates_associated,那么validates_associated会做什么?

1 个答案:

答案 0 :(得分:2)

想想我会把它转到答案。你说,

“鉴于我没有在ForumPost模型中指定validates_associated :replies,我是否应该期望此保存失败?”

不,你应该期望它保存,因为你指定validates_associated :replies

“似乎保存得很好,这不是我预期的,因为我没有指定相关的验证。”

似乎保存得很好,因为验证关联,因为你没有指定它。