Отношение 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