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

これをDBに移行すると。地理コードという名前のテーブルを作成します。さて、レコードを挿入しようとすると、

 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が郵便番号と同じ値をとっているのはなぜですか?

何か推測?

4

1 に答える 1

0

コードに間違いを見つけたので、自分で答えたいと思います。

誤って、モデルの主キーとしてzip_codeを設定しました。これがシナリオが起こっている理由です。

それが私の間違いでした。Railsはzip_code+idを主キーとして扱い、idとzip_codeの両方に同じ値を設定していました。

于 2013-01-17T08:42:45.773 に答える