2015-01-13 8 views
5

nilをしていますしかし、posgresqlコンソールにはありません。これは私を混乱させ、私はそれを修正する方法を知らない。 また、投稿を手作業で作成した場合、created_at属性はnilではありません。誰かが何が起こっているか教えてもらえますか?タイムスタンプ属性は、私が2つのモデル、<code>Microspost</code>と<code>User</code>を持って

2.1.5 :016 > m = Micropost.create!(content: "hello", user_id: User.first.id) 
    User Load (0.6ms) SELECT "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT 1 
    (0.2ms) BEGIN 
    SQL (0.8ms) INSERT INTO "microposts" ("content", "user_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["content", "hello"], ["user_id", 1], ["created_at", "2015-01-13 08:07:38.584269"], ["updated_at", "2015-01-13 08:07:38.584269"]] 
    (9.6ms) COMMIT 
=> #<Micropost id: 301, content: "hello", user_id: 1, created_at: "2015-01-13 07:07:38", updated_at: "2015-01-13 07:07:38"> 
2.1.5 :017 > m.created_at 
=> Tue, 13 Jan 2015 08:07:38 CET +01:00 

もちろん私のPosgresqlコンソールでは、マイクロポストに実際にタイムスタンプがあることがわかります。

railsdays_development=# \d+ microposts 
                 Table "public.microposts" 
    Column |   Type    |      Modifiers      | Storage | Stats target | Description 
------------+-----------------------------+---------------------------------------------------------+----------+--------------+------------- 
id   | integer      | not null default nextval('microposts_id_seq'::regclass) | plain |    | 
content | text      |               | extended |    | 
user_id | integer      |               | plain |    | 
created_at | timestamp without time zone | not null            | plain |    | 
updated_at | timestamp without time zone | not null            | plain |    | 
Indexes: 
    "microposts_pkey" PRIMARY KEY, btree (id) 
    "index_microposts_on_user_id" btree (user_id) 
    "index_microposts_on_user_id_and_created_at" btree (user_id, created_at) 
Has OIDs: no 

railsdays_development=# select * from microposts; 
id |          content          | user_id |   created_at   |   updated_at   
-----+-----------------------------------------------------------------------------------+---------+----------------------------+---------------------------- 
    1 | Velit optio magni in modi distinctio.            |  1 | 2015-01-13 06:48:48.212602 | 2015-01-13 06:48:48.212602 
    2 | Velit optio magni in modi distinctio.            |  2 | 2015-01-13 06:48:48.216021 | 2015-01-13 06:48:48.216021 
    3 | Velit optio magni in modi distinctio.            |  3 | 2015-01-13 06:48:48.218617 | 2015-01-13 06:48:48.218617 
    4 | Velit optio magni in modi distinctio.            |  4 | 2015-01-13 06:48:48.221544 | 2015-01-13 06:48:48.221544 
    5 | Velit optio magni in modi distinctio.            |  5 | 2015-01-13 06:48:48.223975 | 2015-01-13 06:48:48.223975 
    6 | Velit optio magni in modi distinctio.            |  6 | 2015-01-13 06:48:48.226611 | 2015-01-13 06:48:48.226611 
    7 | Magni aliquid ut enim sunt aut.             |  1 | 2015-01-13 06:48:48.22897 | 2015-01-13 06:48:48.22897 
    8 | Magni aliquid ut enim sunt aut.             |  2 | 2015-01-13 06:48:48.23096 | 2015-01-13 06:48:48.23096 
    9 | Magni aliquid ut enim sunt aut.             |  3 | 2015-01-13 06:48:48.232889 | 2015-01-13 06:48:48.232889 
    10 | Magni aliquid ut enim sunt aut.             |  4 | 2015-01-13 06:4: 

偽物で作成されたMicropostはnilタイムスタンプを持っています。しかし、私は自分自身を作成するMicropostsは有効なタイムスタンプを持っています。

これは偽物(最初の300マイクロポスト)

2.1.5 :021 > Micropost.count 
    (0.6ms) SELECT COUNT(*) FROM "microposts" 
=> 301 
2.1.5 :022 > a = Micropost.find(2).created_at 
    Micropost Load (0.6ms) SELECT "microposts".* FROM "microposts" WHERE "microposts"."id" = $1 ORDER BY "microposts"."created_at" DESC LIMIT 1 [["id", 2]] 
=> nil 
2.1.5 :023 > 

_create_microposts.rbにより作成されたmicropostからである:あなたのアプリケーションを掘り後

class CreateMicroposts < ActiveRecord::Migration 
    def change 
    create_table :microposts do |t| 
     t.text :content 
     t.references :user, index: true 

     t.timestamps null: false 
    end 
    add_index :microposts, [:user_id, :created_at] 
    end 
end 
+0

で見つけることができますcreated_atとはnilを取得している場合、あなたは私を示していただけますか? – Ajay

+0

'2.1.5:021> Micropost.count (0.6ms)"マイクロポスト "から選択した数値(*) => 301 2.1.5:022> a = Micropost.find(2).created_at Micropost Load "マイクロポスト"から "マイクロポスト"から "ID" = $ 1 ORDER BY "マイクロポスト"。 "created_at" DESC LIMIT 1 [["id"、2]] => nil 2.1 .5:023> '@Ajay – Emanuel

+0

あなたの移行ファイルを貼り付けると、XXXX_create_microposts.rbの移行はどうですか? – Ajay

答えて

6

、私はあなたにこのラインを持っていることを発見しましたconfig/application.rb

config.active_record.default_timezone = 'Warsaw'

config.active_record.default_timezoneは、UTCを使用する場合は:utc、またはconfig.time_zoneにあるタイムゾーンを使用する場合は:localのいずれかが必要です。私は:localにこれを設定すると、ローカルに、私が取得:

>> Micropost.first 
    Micropost Load (1.0ms) SELECT "microposts".* FROM "microposts" ORDER BY "microposts"."created_at" DESC LIMIT 1 
=> #<Micropost id: 300, content: "Nemo fuga eveniet expedita consequatur.", user_id: 6, created_at: "2015-01-19 22:21:48", updated_at: "2015-01-19 22:21:48", picture: nil> 

:utcに設定すると、私が手:

>> Micropost.first 
    Micropost Load (0.6ms) SELECT "microposts".* FROM "microposts" ORDER BY "microposts"."created_at" DESC LIMIT 1 
=> #<Micropost id: 300, content: "Nemo fuga eveniet expedita consequatur.", user_id: 6, created_at: "2015-01-19 16:21:48", updated_at: "2015-01-19 16:21:48", picture: nil> 

私はおそらくこれを自分自身を逃しているだろうが、私はので、ドキュメントのために掘る行ってきましたconfigは「見栄えが悪い」

関連文書はsection 3.6 of the Rails guide under Configuring Active Record.