Rails,命名范围不起作用

时间:2013-06-25 20:07:30

标签: ruby-on-rails ruby ruby-on-rails-3

我为我的患者模型定义了一个简单的命名范围,如下所示:

class Patient < ActiveRecord::Base
has_many :treatments
scope :recent_treatments, order('dateg desc')

所以在我看来:

<% @patient.recent_treatments.each do |treatment| %>
  <tr class="<%= category_table_row_class(treatment.category) %>">....
  <td><%= treatment.category.try(:typ) %><span id="anzahl"><%= tr.....

但不知怎的,它不起作用,我得到错误:

 undefined method `recent_treatments' for #<Patient:0x39a92f0>

所以我不知道我做错了什么,除此之外,如果有人能解释为什么命名范围不是铁轨中的最佳实践以及我应该使用什么呢?

1 个答案:

答案 0 :(得分:3)

我认为你的范围在错误的模型上。如果我理解正确,对于给定的患者,您需要一份他们的治疗清单,最近一次。在这种情况下,你想要这样的东西:

class Patient < AR::Base
  has_many :treatments
end

class Treatment < AR::Base
  belongs_to :patient
  scope :recent, order('dateg desc')
end

@patient.treatments.recent.each do....