0

我在rails中有一个非常简单的迁移脚本,

class CreateGeocode < ActiveRecord::Migration
def up
  create_table :geocodes do |t|      
    t.string :zip_code, :null => false
    t.float :latitude
    t.float :longitude
    t.string :country_code
    t.timestamps      
  end
end

def down
    drop_table :geocodes
end
end

当我将此迁移到数据库时。它创建一个名称为地理编码的表。现在,当我尝试在其中插入一条记录时,

 g = Geocode.new(:zip_code => '27606')
 g.save

通过rails控制台,这是我得到的结果,

mysql> select * from geocodes;

+-------+----------+----------+-----------+--------------+---------------------+---------------------+ 
| id    | zip_code | latitude | longitude | country_code | created_at          | updated_at          |
+-------+----------+----------+-----------+--------------+---------------------+---------------------+ 
| 27606 | 27606    |     NULL |      NULL | NULL         | 2013-01-17 08:10:34 | 2013-01-17 08:10:34 |
+-------+----------+----------+-----------+--------------+---------------------+---------------------+ 
1 row in set (0.00 sec)

为什么 id 与 zipcode 的值相同?

有什么猜测吗?

4

1 回答 1

0

我想自己回答,因为我在代码中发现了错误。

不小心我将 zip_code 设置为模型中的主键。这就是发生这种情况的原因。

那是我的错误。Rails 将 zip_code+id 作为主键,并为 id 和 zip_code 设置相同的值。

于 2013-01-17T08:42:45.773 回答