在未确认期后

时间:2017-10-25 15:04:49

标签: ruby-on-rails devise ruby-on-rails-5 devise-confirmable

使用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

端 端

1 个答案:

答案 0 :(得分:-2)

请记住,factory_girl现在也是factory_bot。我知道这不能回答你的问题,但对你前进有帮助。