RSpec更改模型属性名称

时间:2014-04-24 08:30:29

标签: ruby-on-rails ruby ruby-on-rails-4 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

有谁知道这到底会导致什么?

1 个答案:

答案 0 :(得分:2)

终于找到了问题所在,该死的是奇怪的。

Rails 4中的全新版本是ActiveRecord::Migration.maintain_test_schema!。这个方便的小工具非常好用,但仅在创建新迁移时更新测试模式。在此过程中,如果第一次出现迁移错误,并在以后更新,则会发现此类不一致。

要解决此问题,请运行rake db:test:prepare。您将收到弃用警告,但忽略它。当您再次检查rspec内部时,它应该可以正常工作。