tôi có 2 mô hình, Microspost
và User
:thuộc tính Timestamp là nil
class Micropost < ActiveRecord::Base
belongs_to :user
default_scope -> { order(created_at: :desc) }
validates :user_id, presence: true
validates :content, presence: true, length: { maximum: 140 }
end
class User < ActiveRecord::Base
has_many :microposts, dependent: :destroy
attr_accessor :remember_token, :activation_token, :reset_token
before_save :downcase_email
before_create :create_activation_digest
validates :name, presence: true, length: { maximum: 50 }
end
seed.rb
:
User.create!(name: "Example User",
email: "[email protected]",
password: "foobar",
password_confirmation: "foobar",
admin: true,
activated: true,
activated_at: Time.zone.now)
99.times do |n|
name = Faker::Name.name
email = "example-#{n+1}@railstutorial.org"
password = "password"
User.create!(name: name,
email: email,
password: password,
password_confirmation: password,
activated: true,
activated_at: Time.zone.now)
end
# Microposts
users = User.order(:created_at).take(6)
50.times do
content = Faker::Lorem.sentence(5)
users.each { |user| user.microposts.create!(content: content) }
end
Nhưng khi tôi sử dụng Faker để tạo Microposts, các created_at
và updated_at
thuộc tính này là nil
trong Rails nhưng KHÔNG trong giao diện điều khiển posgresql. Điều này đã làm tôi bối rối và tôi không biết cách sửa nó. Hơn nữa khi tôi tạo bài đăng theo cách thủ công, thuộc tính created_at
không phải là số không. Ai đó có thể cho tôi biết chuyện gì đang diễn ra không?
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
Và tất nhiên ở đây trong bảng điều khiển Posgresql của bạn, bạn có thể thấy micropost thực sự có dấu thời gian.
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 được tạo bởi Faker có nil
dấu thời gian. Nhưng Microposts tôi tự tạo ra có một dấu thời gian hợp lệ.
này là từ một micropost tạo ra bởi Faker (đầu tiên 300 microposts)
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
:
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
Bạn có thể vui lòng chỉ cho tôi nơi created_at của bạn đang nhận được không? – Ajay
'2.1.5: 021> Micropost.count (0.6ms) CHỌN COUNT (*) TỪ" microposts " => 301 2.1.5: 022> a = Micropost.find (2) .created_at Tải Micropost (0.6ms) CHỌN "microposts". * TỪ "microposts" WHERE "microposts". "Id" = $ 1 ORDER BY "microposts". "Created_at" DESC LIMIT 1 [["id", 2]] => nil 2.1 .5: 023> '@Ajay – Emanuel
dán tệp di chuyển của bạn, hãy di chuyển XXXX_create_microposts.rb? – Ajay