I use this code to delete user from database:
task :delete_username, [:user_name] => :environment do |environment, args|
value = args[:user_name].to_s
puts "Deleting #{value}"
MerchantUser.where(:login => value).delete
end
How I can verify that user is successfully deleted? For example that is the proper way to sue try-catch in this code?
Here's one way to do it, using destroyed?
:
task :delete_username, [:user_name] => :environment do |environment, args|
value = args[:user_name].to_s
user = MerchantUser.where(:login => value).first
if user
puts "Deleting user \"#{value}\""
user.destroy
if user.destroyed?
puts " User \"#{value}\" successfully deleted!"
else
raise "Problem while deleting user \"#{value}\""
end
else
puts "No user with login \"#{value}\" found"
end
end
You could also call destroy!
and let Rails raise an exception if the record cannot be deleted.
Note that MerchantUser.where(:login => value)
is an ActiveRecord::Relation
, which doesn't respond to delete
or destroy
.
You should use MerchantUser.where(:login => value).first
or MerchantUser.find_by_login(value)