In my deployment process I am running my seeds file. I want this to be Idempotent so I can run it multiple times without any issue.
Currently I get PG primary key errors if I run it multiple times.
My seeds pattern looks like this:
user = User.create(.....)
user.save!
foo = Foo.create(....)
foo.save!
How can I make this Idempotent?
Is this the best way?
if( user.exists?(some_column: some_value) )
else
# do insert here
end
I believe you can make use of first_or_create
User.where(email: "[email protected]").first_or_create do |user|
user.name = "John"
end
This will only create User with email = "[email protected]" if it doesn't exist or it will return you the instance of existing User.
This way you can avoid the Unique Key Violation
You can try :
unless user.find_by(some_column: some_value)
user.save!
end
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With