我使用此代码从数据库中删除用户:
task :delete_username, [:user_name] => :environment do |environment, args|
value = args[:user_name].to_s
puts "Deleting #{value}"
MerchantUser.where(:login => value).delete
end
如何验证用户是否已成功删除?例如,这是在这段代码中起诉try-catch的正确方法吗?
答案 0 :(得分:1)
使用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
如果无法删除记录,您也可以调用destroy!
并让Rails引发异常。
请注意,MerchantUser.where(:login => value)
是ActiveRecord::Relation
,不会回复delete
或destroy
。
您应该使用MerchantUser.where(:login => value).first
或MerchantUser.find_by_login(value)