0

我已经重建了我的网络地图,现在我似乎无法让我的嵌套模型工作。它设置为 IDF => Switch(每个 IDF 有许多开关)。我试图能够列出 IDF 的开关,但出现以下错误:

Mysql2::Error:'where 子句'中的未知列'switches.idf_id':SELECT switches.* FROM switches WHERE switchesidf_id= 1

我假设由于某种原因,当为交换机构建 mysql 表时,没有将其映射到交换机 ID 的列。我不知道为什么不是。我已经编辑了模型并重新编写了几次项目,但我不知道缺少什么。任何帮助将非常感激!

应用程序/模型/idf.rb:

class Idf < ActiveRecord::Base
  attr_accessible :location, :room_number
  has_many :switches
  accepts_nested_attributes_for :switches
end

应用程序/模型/switch.rb:

class Switch < ActiveRecord::Base
  attr_accessible :model, :title
  belongs_to :idf
end

应用程序/视图/idfs/show.html.erb:

<p id="notice"><%= notice %></p>

<p>
  <b>Location:</b>
  <%= @idf.location %>
</p>

<p>
  <b>Room number:</b>
  <%= @idf.room_number %>
</p>

<h2>Switches:</h2>
<%= render @idf.switches %>

<h2>Add a switch:</h2>
<%= render "switches/form" %>

<%= link_to 'Edit', edit_idf_path(@idf) %> |
<%= link_to 'Back', idfs_path %>

^^在我尝试添加开关功能之前一切正常。

4

1 回答 1

1

这听起来像是您的 Switch 数据库迁移的问题。你能粘贴迁移吗?您是手动生成迁移和模型,还是使用“rails generate ...”?

您的迁移应类似于:

class AddSwitch < ActiveRecord::Migration

  #assuming Rails 3
  def change
    create_table :switches do |t|
      # Add attributes
      t.references :idf  # same as t.integer :idf_id
    end
  end

end
于 2012-06-25T18:58:57.667 回答