Rails中的模型是隐含的,这是一个烦人的事情吗?

时间:2010-08-07 00:08:45

标签: ruby-on-rails ruby

考虑Rails中的模型:

class Organization < ActiveRecord::Base  
    belongs_to :OrgType  
end    

Rails中的模型不包含构成实体的字段会让您感到困扰吗? 我知道这是为了DRY而完成的,但是每次要检查模型的字段时都必须检查数据库表架构。

4 个答案:

答案 0 :(得分:3)

对我来说并不烦人...自从我开始使用annotate-models gem自动在我的模型文件顶部添加注释后,列出了与该模型相关联的字段。

答案 1 :(得分:3)

如果您更喜欢ORM模型的声明式样式,您可能需要查看DataMapperSequel,这两种内容都很容易插入到Rails 3中。

答案 2 :(得分:1)

几个月前,我正在收听一个播客,其中主持演员和客人的人主张Rails应该采取这种方式,并取消迁移。这家伙不断重复“迁移必须死”,建议有办法在模型上指定你的架构。

我不能不同意,我希望Rails永远不会走这条道路。它不仅不是DRY,而且我喜欢Rails鼓励您了解自己的数据库架构和结构这一事实。

此外,如果模型是控制模型的,那么就没有办法保留模式的历史记录,而不会让它们变得非常混乱。迁移本质上是对您的数据库的版本控制,随着您的应用程序而发展......我不希望没有。

答案 3 :(得分:0)

我们假设OrgType有一个名为position的字段。当您想要向将要选择类型的用户显示选择列表时,这种情况很常见。你的Organization极不可能关心这个领域。现在将其推广到其他相关模型,其中包含其他模型不关心的字段,并添加以下事实:如果您想要更改其中一个字段,则需要搜索它们的每个声明,而不仅仅是每个它们被使用的地方。

这是一团糟。

打开您的数据库工具,当您想知道它们是什么时,查看您的字段。保持模型清洁可读。如果你看到这样的代码:

organization.org_type.name

很明显,OrgType有一个名称字段,无需查找,也无需在每个模型中跋涉配置混乱。