如果问题有点不精确,请道歉,但我会在下面描述我的问题.
我在Rails项目中设置了一些模型,有一件事我注意到我遇到了几次以上的事情是处理符合以下条件的属性:
例如,我的一个模型应该有一个status可以设置为以下之一的字段:定义,执行或完成.我需要在界面中显示那些特定的单词,但是我不想将这些字符串存储在DB中,以防我将来需要更改它们(或者国际化,或者其他什么.)
显而易见的选择是为每个模型定义模型,但这似乎在维护模型时会产生大量开销,确保我在环境之间编写迁移等等,这对于每个模型来说都是如此.高架.
另一种选择是将它存储为一个整数,并打出一个"枚举"类型类来存储这些值的转换 - 这可能会正常工作,但我担心我会丢失关联和其他方便的东西我从ActiveRecord模型中获取.
有关处理这种情况的最佳方法的任何建议吗?
Ada*_*sek 12
定义一个varchar或ENUM在数据库中并验证模型中的字段:
validates_inclusion_of :status, :in => %w(Defining Executed Completed)
Run Code Online (Sandbox Code Playgroud)
Rails会将其视为字符串字段,但它仍然会验证值是什么.
如果您确实需要抽象状态字段的文本,则可以将其保存为整数:
class Foo < ActiveRecord::Base
STATUS_DESCRIPTIONS = %w(Defining Executed Completed)
def status
STATUS_DESCRIPTIONS[ read_attribute(:status) ]
end
end
Run Code Online (Sandbox Code Playgroud)
如果它变得更复杂,你应该尝试@ Beerlington的宝石.
| 归档时间: |
|
| 查看次数: |
8001 次 |
| 最近记录: |