如何根据实例变量是否返回true来删除类实例



我制作了一个基于CRUD的伪造银行账户管理器,可以创建新账户,也可以使用终端销毁它们。为了明确起见,这是而不是Rails应用程序。我用香草Ruby制作了一个"假"MVC结构来理解基本概念。

当满足"destroy"条件时,我很难删除类实例。在这种情况下,如果用户想要销毁银行帐户,他们需要指定类实例的银行帐号。我不确定我的Ruby方法是否只是错误地试图处理删除,或者我所做的是不可能的。

到目前为止的方法是:

def delete(account_number)
@accounts.each_with_index do |account, index|
account.include?(account_number) ? account.delete_at(index) : "No account found"
end
end

这是我收到的错误信息:

`block in delete': undefined method `include?' for #<Account:0x00007fe82c8926c0 @name="test", @account_number="12345", @sort_code="040004", @balance="1234.5"> (NoMethodError)

本质上,我的最终目标是让我的方法扫描类实例,将@account_number与终端中传递的account_number匹配,并完全删除该实例。我已经能够使用"索引"(即"索引"(来做到这一点;删除列表中的第一个";(索引+1(,但希望尝试更高级的方法。

N.B:@accounts是一个实例变量,设置为数组来存储实例。

当我想删除帐户数组中具有特定名称的帐户时,我会使用Array#delete_if

def delete(account_number)
@accounts.delete_if { |account| account.number == account_number }
end

如果没有找到匹配的帐户,则此方法保持@accounds数组不变。

相关内容

最新更新