Spec失败未定义方法`parameterize'

时间:2012-09-19 14:32:44

标签: ruby-on-rails ruby-on-rails-3 rspec

我对模型进行了自定义验证,并且我得到了一个没有意义的未定义方法。

这是代码

  validate :unique_seo_url_from_title

 def unique_seo_url_from_title
    url = "#{title.parameterize}-#{region.parameterize}-#{country}"
    errors.add(:title, "already in use") if SeoMapping.find_by_seo_url(url)
  end

奇怪的是,如果我输出网址,即提高网址,它会完美地打印出来以便它正常工作。

希望有人可以提供建议!

2 个答案:

答案 0 :(得分:0)

由于您没有将参数传递给函数,因此标题,区域和国家/地区似乎是使用验证的模型的属性。所以使用self作为对象

验证:unique_seo_url_from_title

 def unique_seo_url_from_title
    url = "#{self.title.parameterize}-#{self.region.parameterize}-#{self.country}"
    errors.add(:title, "already in use") if SeoMapping.find_by_seo_url(url)
  end

由于

答案 1 :(得分:0)

undefined method `parameterize' for nil:NilClass

这条消息正是它所说的。您有一个nil的对象,并在其上调用parameterize - 该方法失败,因为该方法是在String上定义的,而不是NilClass

检查titleregion的值是否存在。如果没有,那就是你的问题。