【发布时间】:2011-05-21 23:16:34
【问题描述】:
大家好——这个问题专门针对gender 验证,但我很想听听你们如何处理具有更大集合的类似情况(例如,国家/地区选择)。
我正在开发一个系统,让运动员可以注册各种赛事,目前正在开发一个良好的性别验证。我的问题是,在许多不同模型上运行相同验证的最佳、最干燥的方法是什么?
假设我想验证Event 和User 的性别属性。我可以为validates_each 创建一个助手,在更新gender 属性之前检查值是否包含在["male", "female"] 的非常短的数组中。但是,如果我想在 form_for 块中访问相同的性别数组,比如作为 collection_select 的输入,该怎么办?
我让它适用于一个模型——我在Event 中声明了一个GENDERS 常量,并且有一个简短的类方法
def self.genders
GENDERS
end
通过表单访问。但是如果多个模型需要访问,我应该将数组存储在哪里?
编辑:一个想法是在应用程序控制器中使用类方法。任何关于这种方法有多合适的想法都会很棒。
【问题讨论】:
-
为什么不在你的设计中让 Gender 成为一个实体?这有点矫枉过正,但它可能比硬编码数组更适合,但它很短。这样它就可以像任何其他模型一样工作,并且可以在 collection_select 中访问它而无需进一步的箍。
标签: ruby-on-rails data-modeling