Отношение mxn в моделях данных в Ruby on Rails

У меня есть следующая проблема:

У меня есть три разных модели данных: клиент, периоды и запрос. Запрос состоит из customer_id и period_id (я не знаю, почему его periodS_id, потому что я сгенерировал каркас, называемый period). Теперь, если я хочу создать запрос, я хочу выбрать клиента и период, поэтому мой код в form.html.erb запросов:

<div class="field">
  <%= f.label 'Kunde auswählen' %><br />
  <%= f.collection_select :customer_id, Customer.all, :id, :name %>
</div>

<div class="field">
  <%= f.label 'Zeitfenster auswählen' %><br />
  <%= f.collection_select :periods_id, Period.all , :id, :description %>
</div> 

и это работает довольно хорошо. Я могу выбрать имя клиентов и перидос, но затем, если я хочу создать запрос, я получаю сообщение об ошибке с неопределенным методом, потому что он не может отобразить имя периодов в show.html.erb:

  <%= @request.customer.name%>


  <%= @request.periods.name%>

Моя идея - ошибка в моделях данных. Я не уверен, что эти отношения mxn работают. Вот датамодели:

class Request < ActiveRecord::Base
validates :periods_id, :customer_id, presence: true

belongs_to :customer
belongs_to :period
end

class Period < ActiveRecord::Base

has_many :requests, :dependent => :destroy
has_many :customers, :through => :requests
end

class Customer < ActiveRecord::Base

has_many :requests, :dependent => :destroy
has_many :periods, :through => :requests
end

и это работает для клиента: если я удаляю period.name, он может показать имя конкретного клиента.

Есть идеи?

1 ответ

Его дают ошибку period так как request модель принадлежит periodне request has_many period

<%= @request.period.name%>

+ Изменить .periods в .period

Другие вопросы по тегам