Verwenden Sie auch Mongoid, wenn dies relevant ist.Fehler bei der Verwendung von FactoryGirl mit has_secure_password in der Featurespezifikation
Wenn ich einen Benutzer mit Factory-Girl erstellen, heißt es, der Benutzer ist gültig. Wenn ich jedoch über ActiveRecord auf diesen Benutzer zugreife, sagt es, dass es ungültig ist. Hier ist ein Überblick über das Thema:
user = create(:user, :activated)
user.valid? # => true
User.count # => 1
db_user = User.first
db_user == user # => true
db_user.valid? # => false
db_user.errors.count # => 0
# it only shows the error messages once I try to modify an attribute
db_user.email = "[email protected]"
db_user.save # => false
db_user.errors # => @messages={:password=>["is too short (minimum is 6 characters)", "can't be blank"]}
Hier ist meine Fabrik:
FactoryGirl.define do
factory :user do
name { Faker::Name.name }
email { "#{name.gsub(/[^0-9a-zA-Z]/i, '')}@example.com" }
phone { Faker::Base.numerify("#{"#" * 10}") }
admin false
password "password"
password_confirmation "password"
end
end
Hier ist die relevanten Teile des User-Modell:
class User
include Mongoid::Document
include ActiveModel::SecurePassword
field :name, type: String
field :email, type: String
validates :password, length: { minimum: 6 },
presence: true
has_secure_password
Update - Dieses Problem scheint mit meinem Problem in Verbindung zu stehen https://github.com/mongoid-rspec/mongoid-rspec/issues/135 –