0

我为患者模型定义了一个简单的命名范围,您可以在此处看到:

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>

所以我不知道我做错了什么,除此之外,如果有人能解释一下为什么命名范围不是 Rails 中的最佳实践以及我应该改用什么,那就太好了?

4

1 回答 1

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....
于 2013-06-25T20:12:33.927 回答