【发布时间】:2017-03-02 12:18:36
【问题描述】:
我有以下问题:
我有三种不同的数据模型:客户、期间和请求。一个请求由 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,他可以显示特定客户的名称。
有什么想法吗?
【问题讨论】:
标签: ruby-on-rails ruby datamodel