2017-03-02 115 views
0

我有以下問題:Ruby on Rails中的數據模型中的mxn關係

我有三種不同的數據模型:客戶,期間和請求。一個請求由customer_id和periods_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> 

,這工作得很好。我可以選擇客戶和peridos的名字,但這時如果我想創建一個請求,我得到錯誤信息undefinded方法,因爲他不能顯示在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,他可以顯示特定客戶的名稱。

任何想法?

回答

0

它給出period錯誤,因爲request新型屬於period,不request has_many period

<%= @request.period.name%> 

變化.periods.period

+0

我改period.name但你肯定請求可以有很多時間段或我認爲不對?在數據模型中我需要改變什麼? – Feidex

+0

如果我'請求has_many時期'每個時期顯示爲'期間' – Feidex