【问题标题】:How do you define a class method?你如何定义一个类方法?
【发布时间】:2013-06-08 21:36:14
【问题描述】:

我有一个带有控制器 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

【问题讨论】:

  • Stack Overflow 不能替代基本的谷歌搜索。

标签: ruby-on-rails ruby methods


【解决方案1】:

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

def self.foo
end

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-08
    • 2012-03-16
    • 2011-01-15
    • 1970-01-01
    • 2019-02-06
    相关资源
    最近更新 更多