-1

我有一个带有控制器 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 来查看该方法是否存在,但不存在。(请参阅此处的列表:http: //pastebin.com/B3y1r2w7

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

也没有什么特别的事情发生,所以我不太确定发生了什么。

带有 Ruby 2.0.0-p195 的 Rails 3.2.12

4

1 回答 1

3

要定义一个类方法,语法是

def self.foo
end

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

于 2013-06-08T21:48:18.030 回答