问题:有一个enum
值列表,比如说status
。但是每个状态都需要每个键的更多信息,而不仅仅是passed
or failed
。
我正在寻找一个更优雅的解决方案来解决我现在拥有的问题:
class Result < ActiveRecord::Base
enum status: {passed: 0, failed: 1}, _default: :passed
def icon
Result.icons[status]
end
def text
Result.texts[status]
end
def self.icons
{passed: 'fa-check', failed: 'fa-cross'}.with_indifferent_access
end
def self.texts
{passed: 'Your result has passed', failed: 'Your result has failed'}.with_indifferent_access
end
end
所以在视图中我可以做类似的事情:
result = Result.new(status: :passed)
result.icon
result.text
我在这里找到了一个带有看似优雅的解决方案的响应ActiveModel::Serializer
,但这不是一个有效的示例。至少,我没有让它在 Rails 6 中工作。
我的解决方案工作正常,但是当您开始为每个状态获取 5 个属性和 8 个不同状态时,它变得非常乏味。
也许我实际上应该将它映射到 yaml 文件?还是使用i18n
?
无论如何,希望我的问题很清楚,期待看到您对此的解决方案。