0

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

这是代码

  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

奇怪的是,如果我输出 url,即 raise url,它会完美地打印出来,这样它就可以工作了。

希望有人可以建议!

4

2 回答 2

0

Since you didn't pass parameters to the function, it seems that title, region and country are attributes of model for which validation is used. So use self for the object

validate :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

Thanks

于 2012-09-19T16:14:59.720 回答
0
undefined method `parameterize' for nil:NilClass

该消息的含义正是它所说的。您有一个对象 is nil,并且您调用parameterize它 - 因为该方法是定义的String,而不是定义的,所以它失败了NilClass

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

于 2012-09-20T02:32:09.147 回答