我正在访问一个 Web 服务,它以 XML 形式返回数据,这些数据被填充到自定义模型中。其中一个节点称为 AccountType,并且有 2 个子节点,代码和描述。
因此,从 Web 服务返回,它看起来像这样:
...
<AccountType>
<Code>ABC</Code>
<Description>Description for ABC</Description>
</AccountType>
...
一旦将其传输到自定义模型中,就可以从 Account 类的实例以编程方式访问这些值,如下所示:
myAccount.account_type_code
=> ABC
myAccount.account_type_description
=> Description for ABC
帐户类型有少量可能的值,我需要能够根据帐户关联的帐户类型来编程逻辑。所以我想枚举 Account 类中的可能值,目标是能够编写如下所示的代码:
if (myAccount.account_type_code == Account.account_types.ABC)
...do something...
end
另一个让我复杂的方面是,存在与帐户类型相关联的代码和描述,因此枚举的定义可能需要如下所示:
def self.account_classes
{
:ABC => { :code=>"ABC", :description=>"Description for ABC" }
,:DEF => { :code=>"DEF", :description=>"Description for DEF" }
}
end
这将需要逻辑看起来像这样:
if (myAccount.account_type_code == Account.account_types[:ABC][:code])
...do something...
end
实际上,逻辑将仅取决于代码,但将描述存储在其中可能对测试/用户消息有用。
此功能是 gem 的一部分,将由具有不同数据库的多个应用程序使用,因此我宁愿远离数据库解决方案。
编辑
为简单起见,我只列出了一个类似这样的属性(帐户类型),但实际上有 3 或 4 个不同的属性都遵循相同的模式(帐户类别、帐户状态等也是如此)。
任何想法都非常感谢!