不是值,属性的名称。是的,真的。我不知道到底发生了什么。
迁移:
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
有谁知道这到底会导致什么?
答案 0 :(得分:2)
终于找到了问题所在,该死的是奇怪的。
Rails 4中的全新版本是ActiveRecord::Migration.maintain_test_schema!
。这个方便的小工具非常好用,但仅在创建新迁移时更新测试模式。在此过程中,如果第一次出现迁移错误,并在以后更新,则会发现此类不一致。
要解决此问题,请运行rake db:test:prepare
。您将收到弃用警告,但忽略它。当您再次检查rspec内部时,它应该可以正常工作。