【问题标题】:mxn relation in Data Models in Ruby on RailsRuby on Rails 中数据模型中的 mxn 关系
【发布时间】: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


    【解决方案1】:

    它给出period 的错误,因为request 模型属于period,而不是request has_many period

    <%= @request.period.name%>
    

    .periods 更改为.period

    【讨论】:

    • 我改成了 period.name 但你确定一个请求可以有多个句号还是我理解错了?我到底需要在数据模型中更改什么?
    • 如果我做 'request has_many period' 每个期间都显示为 'Period'
    猜你喜欢
    • 1970-01-01
    • 2018-04-05
    • 1970-01-01
    • 2011-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-31
    相关资源
    最近更新 更多