I'm testing my UsersController which make users activated and deactivated. I'm use fixtures and when I start my tests, I see error: ActiveRecord::Fixture::FixtureError: table "users" has no column named "status". The same mistake I see on the "locale" field, but on the "role" field, all is well, why?
P.S. Seeds work well
Migrate file (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
User model (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
fixture file (spec/fixtures/users.yml):
alex_foo:
id: 1
firstname: Alex
lastname: Foo
email: alex@foo.com
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: li@huan.chi
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
)
Aucun commentaire:
Enregistrer un commentaire