【发布时间】:2011-08-22 02:49:13
【问题描述】:
假设您有几个模型,其中包含地址、邮政编码、省/国家、电话号码等字段。
这些是具有特定正则表达式验证的相当常见的字段。如果您在每个模型中放置相同的验证和正则表达式,则它是重复的。此外,测试是重复的。这是一种气味;)
使用 ruby 和 rails 重构这些类型的东西的最佳方法是什么?一个模块?
在带有 Hibernate 的 Java 中,我们使用 Component 类来存储地址,然后我们将验证逻辑放在那里。每个想要使用地址的模型都只包含一个地址,它将获得所有地址验证逻辑。
在 Rails 中实现相同目标的方法是什么?谢谢!
【问题讨论】:
-
您的模块想法对我来说似乎是正确的。我会创建一个具有适当功能的模块,然后将其混入。
-
您还可以考虑将地址列移动到单独的表中并使用多态关联(即
belongs_to :addressable, :polymorphic => true) -
您甚至可能想要创建自己的类,而不是模块。
-
我可以在不制作单独表格的情况下创建地址模型吗?制作表格似乎有点过头了,并且会引入不必要的性能问题。该解决方案基本上反映了基于 java 的方法
-
普通的旧 Ruby 对象而不是模型呢?
标签: ruby-on-rails ruby regex validation refactoring