ruby-on-rails - 为什么我的条件验证失败?

标签 ruby-on-rails validation rspec ruby-on-rails-3.1 rspec2

我的 Post 模型中有一个条件验证:

validates :title, :presence => true, :if => Proc.new { |post| post.post_type == "text" }

我的 post_spec.rb 文件中有以下规范:

it "should only require a title if the post type is text" do
  post = Post.new(@attr.merge(:title => "", :post_type => "text"))
  post.should_not be_valid

  post = Post.new(@attr.merge(:title => "", :post_type => "image"))
  post.should be_valid # This fails
end

我的问题是:为什么第二次测试失败了?

最佳答案

您必须在某个地方进行其他验证失败。进入你的 Rails 控制台并执行:

post = Post.new(:title => "", :post_type => "image")
post.valid?
post.errors

看看你得到了什么......

关于ruby-on-rails - 为什么我的条件验证失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7455876/

相关文章:

ruby-on-rails - 使用 Solr 在生产环境中设置 Ruby on Rails 应用程序

ruby-on-rails - 保存到模型时绕过 Carrierwave 上传程序

asp.net - 从下拉列表中选择 "Other"选项时如何验证所需的文本?

validation - 以DRY方式为每个请求验证RESTful URL

ruby-on-rails - 查看测试和 Devise 的 current_user

ruby-on-rails - 如何使用 Capybara 通过查询字符串获取当前路径

ruby-on-rails - 功能规范和系统规范之间的区别

ruby-on-rails - 将查询结果追加到第一个查询结果的末尾

ruby-on-rails - Rails 中的无效 JSON 字符串错误

reactjs - 使用 Yup 和 Formik 自动修剪空白