2014-04-24 183 views
0

不是值,即屬性的名稱。是的,真實的。我不知道該怎麼回事。RSpec更改模型屬性名稱

遷移:

class CreateFolders < ActiveRecord::Migration 
    def change 
    create_table :folders do |t| 
     t.string :name, null: false 

     t.timestamps 
    end 

    change_table :bookmarks do |t| 
     t.belongs_to :folder 
    end 
    end 
end 

的架構:

ActiveRecord::Schema.define(version: 20140424065045) do 

    # These are extensions that must be enabled in order to support this database 
    enable_extension "plpgsql" 

    create_table "bookmarks", force: true do |t| 
    t.string "name",  null: false 
    t.string "url",  null: false 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    t.integer "folder_id" 
    end 

    create_table "folders", force: true do |t| 
    t.string "name",  null: false 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    end 

end 

它所顯示的rails c內:

[3] pry(main)> Bookmark 
=> Bookmark(id: integer, name: string, url: string, created_at: datetime, updated_at: datetime, folder_id: integer) 

而現在,我們巨大的突出的問題:

[3] pry(#<RSpec::Core::ExampleGroup::Nested_2::Nested_1>)> Bookmark 
=> Bookmark(id: integer, name: string, url: string, created_at: datetime, updated_at: datetime, folders_id: integer) 

注意最後一個屬性出現的名字:folders_id

有誰知道在搞什麼都不能導致此?

回答

2

最後發現問題是什麼,該死的是奇怪的。

所以全新的Rails 4,是ActiveRecord::Migration.maintain_test_schema!。這個方便的小工具相當不錯,但是它僅在創建新遷移時更新測試模式。在這個過程中,如果您第一次遇到遷移錯誤,並在稍後進行更新,您會發現這樣的不一致之處。

要解決此問題,請運行rake db:test:prepare。你會得到一個棄用警告,但忽略它。當你再次檢查rspec的內部時,它應該可以正常工作。