質問

私はRailsの2.3.5で私のモデルの一つのためのカスタム検証を作成しようとするんだけど、私は私のテストスイートを実行し、次のエラー毎回が供給し続けます:

`method_missing_without_paginate': undefined local variable or method `validates_progression'

アプリ/モデル/ project.rb

class Project < ActiveRecord::Base
   ...
   validates_progression

   def validates_progression
      true # stubtastic!
   end
end

私はこの〜

の多くを作るように見えることはできません
役に立ちましたか?

解決

あなたは、インスタンスのスコープとメソッドを定義していて、クラスの範囲内でそれを呼び出すようにしようとしているため、

これは動作しません。次の2つの選択肢があります:

タグのインスタンススコープ
class Project < ActiveRecord::Base

  validate :validates_progression

  def validates_progression
     true # stub
  end

end

タグのクラススコープ
class Project < ActiveRecord::Base

  def self.validates_progression
     true # stub
  end

  # Be sure to define this method before calling  it
  validates_progression

end

第二の代替は本当に理にかなっていないあなたは、他のフィルタをラップする場合を除きます。

class Project < ActiveRecord::Base

  def self.validates_progression
     validates_presence_of :progression
     validates_length_of ...
  end

  # Be sure to define this method before calling  it
  validates_progression

end

それ以外の場合は、最初のソリューションで行くます。

他のヒント

ページ付け基準は赤ニシンです。手がかりは、「なし」です。宝石は、既存のmethod_missing方法をエイリアスとmethod_missing_without_paginationそれを呼び出したページ付けます。だから、問題は、標準的な欠落しているメソッドのエラーです。

あなたはそれとBを呼び出したとき、それは)定義されていないため、

この方法は、(あなたは)クラスのスコープ内のインスタンスメソッドを呼び出すようにしようとしている正しい範囲に)いない欠けています。

あなたは、検証方法のシンボルでvalidateを使用して、カスタム検証を追加することができます:

validate :validates_progression

def validates_progression
  true
end
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top