你如何定义一个类方法?

时间:2013-06-08 21:36:15

标签: ruby-on-rails ruby methods

我有一个带有控制器OutcomeDatas的模型OutcomeData。

在OutcomeData中,我现在有一个方法as_cleaned_hash,不做该死的事。让我们假装它返回'你好'

class OutcomeData < ActiveRecord::Base
  attr_accessible :key, :outcome_uid, :task_id, :value

  belongs_to :task
  belongs_to :outcome

  def as_cleaned_hash
    'hello i am alive'
  end

这是as_cleaned_hash应该遵循的方法,如果重要的话:

@outcome_data = OutcomeData.find_all_by_outcome_uid(params[:outcome_uid])
hash = Hash.new
@outcome_data.each do |p|
  unless p[:value].blank? || p[:key] == 'raw'
    hash[p[:key]] = p[:value]
  end
end

这很好 - 现在我把它扔进我的控制器动作,但由于它需要在我的应用程序中使用,我不能让这种情况发生。

因此,无论出于何种原因,我都会收到未定义的方法错误。

我调用了OutcomeData.methods以查看该方法是否存在,并且,nope。 (参见此处列表:http://pastebin.com/B3y1r2w7

OutcomeData.respond_to?('as_cleaned_hash')返回false。

也没有任何幻想,所以我不太确定发生了什么。

Rails 3.2.12 with Ruby 2.0.0-p195

1 个答案:

答案 0 :(得分:3)

要定义类方法,语法为

def self.foo
end

您已定义了一个实例方法。