【发布时间】:2012-04-07 05:07:18
【问题描述】:
我现在在 Ruby on Rails 上做一个相当复杂的模型,我想知道为属性做“自定义类型”的正确“Rails”方式是什么。例如,我有一个表businesses,它有一个字符串属性region。但是 region 只能是预定义的可能性列表之一(以后可以扩展)。我的问题是:我在哪里定义这个 Region 类型?
我知道我可以创建一个特定的regions 表(即一个区域模型),它可以容纳所有选项,然后我可以在具有该表的区域的模型之间建立关联。问题是我的模型上有很多这些类型,所以我的数据库中超过一半的表是“自定义类型表”,它们只存储这些类型的可能值。实用吗?
我还读到您可以通过验证来做到这一点(即在保存记录时验证变量是否在可能的值内)。这似乎很不切实际,因为我想让这个模型可扩展,并且表单视图需要将类型的可能值加载到选择框等中。如果我使用这种方法,每次我需要为一个新的可能值添加一个类型,我必须更改验证和视图。
有没有标准的方法来做这样的事情?像定义类型(可能是没有数据库支持的模型?)这样我可以轻松列出所有可能的值?
感谢您对此提供任何帮助或建议。在做 RoR 应用程序时,它一直困扰着我很长时间,我已经厌倦了围绕它进行黑客攻击。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 types ruby-on-rails-3.1 custom-type