У меня есть две модели: пациент и провайдер присоединились к таблице Chart.Как получить доступ к данным из has_many: через объединение?
Я использовал ассоциации «has_many: через» [вместо «has_and_belongs_to_many»], потому что мне нужно иметь еще один столбец в таблице Chart [называется patient_mrn]
То, что я пытаюсь сделать это, чтобы показать данного пациента и всех связанных с ним поставщиков [каждый со своим именем и конкретным пациентом_mrn].
Я делаю это, хватая все диаграммы, содержащие данный пациент_ID. Тогда я могу легко отобразить patient_mrn от каждой диаграммы с помощью
<%= chart.patient_mrn %>
Но когда я пытаюсь достичь с помощью диаграммы в модели поставщика, чтобы захватить имя поставщика с помощью
<%= chart.provider.provider_name %>
я получаю «неопределенный метод `provider_name 'для nil: ошибка NilClass.
Что я здесь делаю неправильно? Вот более подробно из кода:
Модель больного:
has_many :charts
has_many :providers, :through => :charts
Модель Поставщик имеет:
has_many :charts
has_many :patients, :through => :charts
и модель Диаграмма имеет:
belongs_to :patient
belongs_to :provider
Тогда в моем действии шоу в контроллере пациента у меня есть:
@patient = Patient.find(params[:id])
@charts = Chart.where(:patient_id => @patient.id)
И в моем шоу зрения для пациента у меня есть:
<h2>Listing Providers</h2>
<table>
<tr>
<th>Patient mrn</th>
<th>Provider</th>
</tr>
<% @charts.each do |chart| %>
<tr>
<td><%= chart.patient_mrn %></td>
<td><%= chart.provider.provider_name %></td>
</tr>
<% end %>
</table>
Это потому, что вы получаете 'chart.provider' как' nil'. – shweta
Извините, Швета, я n00b и не понимаю. Не могли бы вы рассказать? – user2284821