0

これは非常に簡単な質問です。モデルでメソッドが次のように定義されているレールキャストを見ていました。

def self.nameoffunction
   ...
end

その後、彼は自分のビューでModel.nameoffunctionを使用してメソッドを参照することができました。

2010年からのレールキャストだったので、モデルで関数を作成しようとすると、ビューで参照しようとすると未定義のメソッドが表示されるため、それ以降に何かが変わったと思います。

モデルに次のようなメソッドを作成したいと思っていました。

def blahblah(variable)
    a = select('column').where('...variable referenced here...').limit(2) 
    b = []
    b.push(a[0]['column'])
    b.push(a[1]['column'])
    return b.sum
end

コンソールにアクセスして入力するModel.blahblahと、未定義のエラーが発生します。

だから私の質問は、いつからメソッドを使用できるのか、そしていつメソッドを使用する前Model.blahblahなどにオブジェクトを作成する必要があるのか​​ということです。Model.find_by_id(3)

4

1 に答える 1

1

self.現在持っているようなインスタンスメソッドではなく、クラスメソッドになるように追加する必要があります。

def self.blahblah(variable)
    a = select('column').where('...variable referenced here...').limit(2) 
    b = []
    b.push(a[0]['column'])
    b.push(a[1]['column'])
    return b.sum
end

別のオプションは、次のことを行うことです。

class << self
  def blahblah(variable)
    a = select('column').where('...variable referenced here...').limit(2) 
    b = []
    b.push(a[0]['column'])
    b.push(a[1]['column'])
    return b.sum
  end
end
于 2013-03-25T23:57:53.440 に答える