嗨,我正在通过 Hartl 工作。我已经到了第 10 章的微博部分,但我生成了 9 次失败,我不明白!
Failures:
1) Hotel
Failure/Error: it {should be_valid}
expected valid? to return true, got false
# ./spec/models/hotel_spec.rb:19:in `block (2 levels) in <top (required)>'
2) Hotel user
Failure/Error: its(:user) { should == user }
expected: #<User id: 211, name: "Person 80", email: "person_78@example.com", created_at: "2013-04-26 22:09:22", updated_at: "2013-04-26 22:09:22", password_digest: "$2a$04$ofUpcvsd84qDWTXG131PYedxXdTy2nPzTME/Gf5rc8c0...", remember_token: "wsF59SbMlKni1mqKLhFX0A", admin: false>
got: nil (using ==)
# ./spec/models/hotel_spec.rb:17:in `block (2 levels) in <top (required)>'
这是我的 hotel_spec.rb 文件
require 'spec_helper'
describe Hotel do
let(:user) {FactoryGirl.create(:user)}
before {@hotel = user.hotels.build(title: "Hilton", room_description: "Biiiiig Room",include_breakfast: "false", price: 566.6, adress:"Smolnaya")}
subject(@hotel)
it {should respond_to(:title)}
it {should respond_to(:room_description)}
it {should respond_to(:include_breakfast)}
it {should respond_to(:price)}
it {should respond_to(:adress)}
it {should respond_to(:user_id)}
it {should respond_to(:user)}
its(:user) { should == user }
it {should be_valid}
describe "accesible attributes" do
it "should not allow access to user_id" do
expect do
Hotel.new(user_id: user.id)
end.to raise_error(ActiveModel::MassAssignmentSecurity::Error)
end
end
describe "when user_id is not present" do
before {@hotel.user_id = nil}
it {should_not be_valid}
end
end
我的hotel.rb 文件
class Hotel < ActiveRecord::Base
attr_accessible :adress, :include_breakfast, :price, :room_description, :title
belongs_to :user
validates :user_id, presence: true
end
我在哪里犯了错误?非常感谢任何想法和解决方案。谢谢。