在模型中定义可以在控制器中访问的方法

时间:2010-07-09 04:24:01

标签: ruby-on-rails

我在Report模型中定义了一个问题方法。我需要在定义动作节目时在报表的控制器中使用Report.problem的值。但我不断收到错误消息'未定义的方法问题'。我该如何解决这个问题?任何帮助都会很棒。

我有一个报告模型和一个包含所有问题列表的问题模型。

在报告模型中

def problems1
Problem.find(:all, :conditions => )
end

在报告控制器中,我需要类似

的内容
def show
  @report = Report.problems1
end

2 个答案:

答案 0 :(得分:28)

您必须指定self.method_name作为类方法

遵循以下模型方法规则

类方法

def self.problem

end
控制器中的

Report.problem

实例方法

def problem

end
控制器中的

report =  Report.new
report.problem

答案 1 :(得分:0)

如果将方法定义为类方法

class Report < ActiveRecord :: Base
 def Report.problem
  puts 1
 end
end

Report.problem
>1

但是如果你将方法定义为对象

class Report < ActiveRecord :: Base
 def problem
  puts 1
 end
end

此方法调用

report = Report.new
report.problem
>1