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を出力すると、つまりURLを上げると、完全に出力されるため、機能することです。

誰かがアドバイスできることを願っています!

4

2 に答える 2

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

ありがとう

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

メッセージは、それが言っていることを正確に意味します。であるオブジェクトがありnil、それを呼び出すと、そのメソッドはではなくparameterizeで定義されているため、失敗します。StringNilClass

titleとの値regionが存在することを確認します。そうでない場合は、問題があります。

于 2012-09-20T02:32:09.147 に答える