使用FactoryGirl并设计,如何在未确认期后构建/创建用户?
我首先尝试将:created_at
设置为一周前,然后我意识到设计'active_for_authentication
实际上基于confirmation_sent_at
,但是将confirmation_sent_at
设置为几周之前仍然没有帮助,因为在创建过程中confirmation_sent_at
将设置为Time.now
我想了解设置此confirmation_sent_at
的时间/位置(我实际上也担心调用send_confirmation_instructions!
会重新发送邮件并重置此confirmation_sent_at`但事实并非如此。 ..)
但更重要的是,一个有效的FactoryGirl特性会在未经证实的访问期后创建一个未经证实的用户。
到目前为止,这是我(不适用于未经证实的工厂)
FactoryGirl.define do
factory :user do
created_at { Time.now }
password 'qsdfghjklmù'
confirmed_at nil
sequence(:email) do |n|
Faker::Internet.email(first_name.gsub(/[^\w]/, '_') + n.to_s)
end
transient do
confirmed true
end
after(:build) do |user, evaluator|
if evaluator.confirmed
user.skip_confirmation!
user.skip_reconfirmation!
end
end
before(:create) do |user, evaluator|
if evaluator.confirmed
user.skip_confirmation!
user.skip_reconfirmation!
end
end
trait :unconfirmed do
confirmed false
end
trait :after_unconfirmation_period do
confirmation_sent_at do
rand((User.allow_unconfirmed_access_for || 1.day).ago..10.days.ago)
end
end
端 端
答案 0 :(得分:-2)
请记住,factory_girl现在也是factory_bot。我知道这不能回答你的问题,但对你前进有帮助。