如何正确创建实例(或类)方法(关联模型)

时间:2012-07-26 10:57:29

标签: ruby-on-rails model controller

我想添加实例方法(或类),但constatly得到unefined方法错误。

网站与报告相关联,具有价值。我需要得到这个价值。

这里我想在我的观点中调用它:

 <%websites.each do |website|%>
   //and use website.amount here

以下是来自WebsiteController的代码(我知道此代码适用于类方法):

  def self.amount
      self.performance_report.conversions
  end

我不知道如何正确使用它,它应该是类还是实例方法以及它应该如何?

2 个答案:

答案 0 :(得分:2)

您应该在模型中添加该方法,而不是在控制器中。这是一个实例方法,因此它应该是def amount

class Website < ActiveRecord::Base
  def amount
    self.performance_report.conversions
  end
end

使用此功能,您可以在视图中执行以下操作:

<% websites.each do |website| %>
  <%= website.amount %>
<% end %>

答案 1 :(得分:0)

Website.find()返回网站的实例。

如果一个网站有一个performance_report,而PerformanceRecord有一个字段转换,

 Website.find(38).performance_report.conversions

应该无需定义任何方法。如果这不能按预期工作,您应该检查您的关联定义。在Controller上定义类方法不会有任何影响。