工厂女孩在安全回调之前
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了工厂女孩在安全回调之前相关的知识,希望对你有一定的参考价值。
我有一个非常具体的用例。我需要每次保存工厂实例“deleted_user”以在“users”表中为其分配ID
,以便“恢复”工作。
class DeletedUser < ActiveRecord::Base
def restore
User.create!(attributes) # ID here is included and is important to be. We want a user with the same ID that it was before deleting!
end
end
FactoryGirl.register :deleted_user do
# need to plug before save and assign ID that never will be used for user ID.
end
并且有不同的方法来持久化工厂实例:
FactoryGirl.create :deleted_user
FactoryGirl.create_list(:deleted_user)
FactoryGirl.build(:deleted_user).save
FactoryGirl.build(:deleted_user).save!
FactoryGirl.build_list(:deleted_user, 2).map(&:save)
FactoryGirl.build_list(:deleted_user, 2).map(&:save!)
正如我看到Factory Girl没有之前的保存回调但只有before(:create)
和on_creation
,但它们仅针对上述调用的1, 2
触发。
你知道如何优雅地使用自定义before(:save)
回调吗?
注意:我的FactoryGirl是4.5.0
答案
您也可以将您的逻辑包含在after(:build)
中,因为在您调用.save
之前它不会触及数据库。
以上是关于工厂女孩在安全回调之前的主要内容,如果未能解决你的问题,请参考以下文章