验证代码执行

Verify code execution

我使用此代码从数据库中删除用户:

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 的正确方法吗?

这是一种方法,使用 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,它不会响应 deletedestroy

您应该使用 MerchantUser.where(:login => value).firstMerchantUser.find_by_login(value)