在保存新记录时,关联的ID将更改为9图号

时间:2011-03-17 23:52:42

标签: ruby-on-rails ruby-on-rails-3 activerecord

我有一个场地桌,每个场地属于一个区域和一个类型。我最近删除了表格并添加了一些地址栏字段。我重新迁移了它,但现在area_id字段随机保存? 9图号。 area_id和venuetype_id整数都以与创建新表单相同的方式创建,venuetype_id保存为正常而不是area_id。有人可以提供任何帮助吗?

控制台中显示

=> [#<Venue id: 4, name: "sdf", addressline1: "", addressline2: "", addressline3
: "", addressline4: "", icontoppx: 234, iconleftpx: 234, area_id: 946717224, ven
uetype_id: 8, created_at: "2011-03-17", updated_at: "2011-03-17 23:33:53">]
irb(main):030:0>

在上面的例子中,area_id应为8。

区域和venuetype id是从新场地表格的下拉框中选出的。

新表格

<%= form_for @venue do |f| %>
  <p>name: <br>
  <%= f.text_field :name %></p>

  <p>top: <br>
  <%= f.text_field :icontoppx %></p>

  <p>left: <br>
  <%= f.text_field :iconleftpx %></p>

  <p>addressline1: <br>
  <%= f.text_field :addressline1 %></p>

  <p>addressline2: <br>
  <%= f.text_field :addressline2 %></p>

  <p>addressline3: <br>
  <%= f.text_field :addressline3 %></p>

  <p>addressline4: <br>
  <%= f.text_field :addressline4 %></p>

  <p>area: <br>
  <%= f.collection_select(:area_id, Area.all, :id, :name) %></p>

  <p>venuetype: <br>
  <%= f.collection_select(:venuetype_id, Venuetype.all, :id, :name) %></p>

  <br><br>

  <div class="button"><%= submit_tag %></div>
<% end %>

区域表

class CreateAreas < ActiveRecord::Migration
  def self.up
    create_table :areas do |t|
      t.string :name

      t.timestamps
    end
  end

  def self.down
    drop_table :areas
  end
end

从控制台显示的区域记录

irb(main):001:0> Area.all
=> [#<Area id: 8, name: "Area1", created_at: "2011-03-17 23:28:40", u
pdated_at: "2011-03-17 23:28:40">, #<Area id: 9, name: "Area2", created_at:
"2011-03-17 23:29:50", updated_at: "2011-03-17 23:29:50">]
irb(main):002:0> Area.all.map(&:id)

非常感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

长整数是内部ruby对象id。我猜测Area.all返回的东西不是ActiveRecord对象。可能是这种情况吗?

区域选择列表选项在浏览器和源中是否正确?我希望您在源中看到9位数值。

答案 1 :(得分:0)

此问题以多种方式呈现,包括将更新的字段更改为bigdecimal。无论如何,我不是专家,但我认为它是一个带有windows和mysql2的blip,它通过将一个新的libmySQL.dll副本从mysql bin目录粘贴到ruby bin目录来更正。