验证代码执行
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
,它不会响应 delete
或 destroy
。
您应该使用 MerchantUser.where(:login => value).first
或 MerchantUser.find_by_login(value)
我使用此代码从数据库中删除用户:
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
,它不会响应 delete
或 destroy
。
您应该使用 MerchantUser.where(:login => value).first
或 MerchantUser.find_by_login(value)