考虑Rails中的模型:
class Organization < ActiveRecord::Base
belongs_to :OrgType
end
Rails中的模型不包含构成实体的字段会让您感到困扰吗? 我知道这是为了DRY而完成的,但是每次要检查模型的字段时都必须检查数据库表架构。
答案 0 :(得分:3)
对我来说并不烦人...自从我开始使用annotate-models gem自动在我的模型文件顶部添加注释后,列出了与该模型相关联的字段。
答案 1 :(得分:3)
如果您更喜欢ORM模型的声明式样式,您可能需要查看DataMapper或Sequel,这两种内容都很容易插入到Rails 3中。
答案 2 :(得分:1)
几个月前,我正在收听一个播客,其中主持演员和客人的人主张Rails应该采取这种方式,并取消迁移。这家伙不断重复“迁移必须死”,建议有办法在模型上指定你的架构。
我不能不同意,我希望Rails永远不会走这条道路。它不仅不是DRY,而且我喜欢Rails鼓励您了解自己的数据库架构和结构这一事实。
此外,如果模型是控制模型的,那么就没有办法保留模式的历史记录,而不会让它们变得非常混乱。迁移本质上是对您的数据库的版本控制,随着您的应用程序而发展......我不希望没有。
答案 3 :(得分:0)
我们假设OrgType
有一个名为position
的字段。当您想要向将要选择类型的用户显示选择列表时,这种情况很常见。你的Organization
极不可能关心这个领域。现在将其推广到其他相关模型,其中包含其他模型不关心的字段,并添加以下事实:如果您想要更改其中一个字段,则需要搜索它们的每个声明,而不仅仅是每个它们被使用的地方。
这是一团糟。
打开您的数据库工具,当您想知道它们是什么时,查看您的字段。保持模型清洁可读。如果你看到这样的代码:
organization.org_type.name
很明显,OrgType
有一个名称字段,无需查找,也无需在每个模型中跋涉配置混乱。