Rails迁移创建表

时间:2013-01-17 08:19:09

标签: ruby-on-rails-3 rake database-migration

我在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

当我将其迁移到DB时。它创建一个名为geocodes的表。现在,当我尝试在其中插入记录时,

 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的值相同?

有什么猜测吗?

1 个答案:

答案 0 :(得分:0)

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

无意中我将zip_code设置为模型中的主键。 这就是情景发生的原因。

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