我对模型进行了自定义验证,并且我得到了一个没有意义的未定义方法。
这是代码
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
奇怪的是,如果我输出网址,即提高网址,它会完美地打印出来以便它正常工作。
希望有人可以提供建议!
答案 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
。
检查title
和region
的值是否存在。如果没有,那就是你的问题。