michael hartl のチュートリアルの第 10 章でマイクロポスト モデルを作成しようとしていますが、rspec テストを通過できません。
これが私がやったことです:
rails generate model Micropost content:string user_id:integer
rm -f spec/factories/microposts.rb
これは、db 移行ファイルです。
class CreateMicroposts < ActiveRecord::Migration
def change
create_table :microposts do |t|
t.string :content
t.integer :user_id
t.timestamps
end
add_index :microposts, [:user_id, :created_at]
end
end
これはマイクロポストのモデル仕様です:
require 'spec_helper'
describe Micropost do
let(:user) { FactoryGirl.create(:user) }
before do
# This code is not idiomatically correct.
@micropost = Micropost.new(content: "Lorem ipsum", user_id: user.id)
end
subject { @micropost }
it { should respond_to(:content) }
it { should respond_to(:user_id) }
end
そして、私はしました:
bundle exec rake db:migrate
bundle exec rake test:prepare
私のエラーメッセージは次のとおりです。
1) Micropost
Failure/Error: @micropost = Micropost.new(content: "Lorem ipsum", user_id: user.id)
ActiveRecord::StatementInvalid:
Could not find table 'microposts'
# ./spec/models/micropost_spec.rb:8:in `new'
# ./spec/models/micropost_spec.rb:8:in `block (2 levels) in <top (required)>'
2) Micropost
Failure/Error: @micropost = Micropost.new(content: "Lorem ipsum", user_id: user.id)
ActiveRecord::StatementInvalid:
Could not find table 'microposts'
# ./spec/models/micropost_spec.rb:8:in `new'
# ./spec/models/micropost_spec.rb:8:in `block (2 levels) in <top (required)>'
スキーマ
ActiveRecord::Schema.define(:version => 20130801225814) do
create_table "users", :force => true do |t|
t.string "name"
t.string "email"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.string "password_digest"
t.string "remember_token"
t.boolean "admin", :default => false
end
add_index "users", ["email"], :name => "index_users_on_email", :unique => true
add_index "users", ["remember_token"], :name => "index_users_on_remember_token"
end
第10章の手順を正確に実行したと確信しているため、問題を理解できません。もしかして前からあるのかな?
助けてくれてありがとう!