ActiveRecord :: Fixture :: FixtureError:表“users”没有名为“status”的列

问题描述 投票:2回答:1

我正在测试我的UsersController,它使用户激活和停用。我使用fixtures,当我开始测试时,我看到错误:ActiveRecord :: Fixture :: FixtureError:表“users”没有名为“status”的列。我在“locale”字段中看到的同样的错误,但在“角色”字段上,一切都很好,为什么?

附:种子运作良好

迁移文件(db / migrate / 20160915110112_create_users.rb):

class CreateUsers < ActiveRecord::Migration[5.0]
 def change
  create_table :users do |t|

  t.string :firstname,           null: false
  t.string :lastname,            null: false

  t.string :email,               null: false

  t.string :login, index: true,  null: false
  t.string :password,            null: false

  t.integer :genres,             null: false

  t.integer :role,               null: false

  t.integer :status,             null: false

  t.integer :locale,             null: false

  t.datetime :created_at,        null: false
  end
 end
end

用户模型(app / models / user.rb):

class User < ApplicationRecord

    validates :login,     presence: true, uniqueness: true
    validates :email,     presence: true, uniqueness: true
    validates :genres,    presence: true, numericality: true
    validates :role,      presence: true

    enum status: { activated: 1, deactivated: 2 }

    enum locale: { ru: 1, en: 2 }

    enum role: { creator: 1, admin: 2 }

    before_create do
      self.firstname.capitalize!
      self.lastname.capitalize!
      self.password = password_generate
      self.status = :activated
      self.locale = :ru
    end

   ...

    private

    def password_generate
      @password = SecureRandom.base64(8)
      BCrypt::Password.create(@password)
    end

  end

夹具文件(spec / fixtures / users.yml):

alex_foo:
  id: 1
  firstname: Alex
  lastname: Foo
  email: [email protected]
  login: foo
  password: $2a$10$E5lj6OpvHwJ4ry3zHt7QrOl0cYgeuWwbvSKXtNZeGAvPIxRVnKnmW
  genres: 46
  role: 1
  status: 1
  locale: 1
  created_at: 2016-10-19 08:16:07.539325

li_huan:
  id: 2
  firstname: Li
  lastname: Huan
  email: [email protected]
  login: huan
  password: $2a$10$E5lj6OpvHwJ4ry3zHt7QrOl0cYgeuWwbvSKXtNZeGAvPIxRVnKnmW
  genres: 54
  role: 2
  status: 1
  locale: 1
  created_at: 2016-10-19 08:16:07.539325

seeds.rb:

User.create(
  firstname: 'init',
  lastname: 'user',
  login: 'init',
  email: 'example@mail',
  genres: 511,
  role: 1
)
ruby-on-rails testing rspec fixtures
1个回答
0
投票

尝试删除列

rails g migration removeStatusFromUsers

然后再添加它。

© www.soinside.com 2019 - 2024. All rights reserved.