我在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的值相同?
有什么猜测吗?
答案 0 :(得分:0)
我想自己回答,因为我在代码中发现了我的错误。
无意中我将zip_code设置为模型中的主键。 这就是情景发生的原因。
那是我的错。 Rails将zip_code + id作为主键,并为id和zip_code设置相同的值。