LoginSignup
1
2

More than 5 years have passed since last update.

【デバッグ共有】undefined method `〜' for #<ActiveRecord::ConnectionAdapters::PostgreSQL::TableDefinition:0x007fe7975659b0>

Posted at

bin/rake db:migrateすると下記エラーが吐かれる

undefined method `date_time' for #ActiveRecord::ConnectionAdapters::PostgreSQL::TableDefinition:0x007fe7975659b0

date_timeが定義されていないとのこと。
環境はPostgrSQL

デバッグ

えそんなわけないやんと思って、まずはマイグレーションファイルを確認。
原因がわからず、参考URLの通り、NATIVE_DATABASE_TYPESという文字でエディタ検索をかけると、postgresql_adapter.rbにてActiveRecordと実際のDBの型を確認。

postgresql_adapter.rb

class PostgreSQLAdapter < AbstractAdapter
      ADAPTER_NAME = "PostgreSQL".freeze

      NATIVE_DATABASE_TYPES = {
        primary_key: "bigserial primary key",
        string:      { name: "character varying" },
        text:        { name: "text" },
        integer:     { name: "integer", limit: 4 },
        float:       { name: "float" },
        decimal:     { name: "decimal" },
        datetime:    { name: "timestamp" },
        time:        { name: "time" },
        date:        { name: "date" },
        daterange:   { name: "daterange" },
        numrange:    { name: "numrange" },
        tsrange:     { name: "tsrange" },
        tstzrange:   { name: "tstzrange" },
        int4range:   { name: "int4range" },
        int8range:   { name: "int8range" },
        binary:      { name: "bytea" },
        boolean:     { name: "boolean" },
        xml:         { name: "xml" },
        tsvector:    { name: "tsvector" },
        hstore:      { name: "hstore" },
        inet:        { name: "inet" },
        cidr:        { name: "cidr" },
        macaddr:     { name: "macaddr" },
        uuid:        { name: "uuid" },
        json:        { name: "json" },
        jsonb:       { name: "jsonb" },
        ltree:       { name: "ltree" },
        citext:      { name: "citext" },
        point:       { name: "point" },
        line:        { name: "line" },
        lseg:        { name: "lseg" },
        box:         { name: "box" },
        path:        { name: "path" },
        polygon:     { name: "polygon" },
        circle:      { name: "circle" },
        bit:         { name: "bit" },
        bit_varying: { name: "bit varying" },
        money:       { name: "money" },
        interval:    { name: "interval" },
        oid:         { name: "oid" },
      }

ここで確認すると、date_timeではなく、datetimeであることがわかる。
どうやらこのファイルでPostgreSQLの場合の初期の型設定がなされているらしい。
datetimeに変更し、無事bin/rake db:migrateができました。
エラー内容自体は初心者感丸出しですが、この確認方法知っとくといいと思って、ご共有させていただきます。

参考

Rails探訪 ~ create_table 編 ~

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2