验证代码执行

时间:2017-01-26 12:20:03

标签: ruby rake rake-task

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

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

1 个答案:

答案 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,不会回复deletedestroy

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