0

使用 Rails 3(尚未确认这在 Rails 2.x 中是否有所不同),当您使用生成器创建模型时,例如:

rails generate model Person first_name:string last_name:string

它没有在它创建的 Person 模型类上声明 first_name 或 last_name 属性。我知道它仍然有效,即迁移在数据库中创建字段,由于动态语言魔术,我可以在运行时设置它们。但是,我认为模型类是一种“文档”,用于说明模型可用的属性。因此,生成器没有添加它们对我来说很奇怪。

我一直在补充:

attr_accessor :first_name, :last_name

到我的模型课。或者更好的是attr_accessible。但即便如此,也不清楚数据类型是什么。

我只是好奇其他人的想法是什么:

  1. 为什么生成器默认不这样做?
  2. 您自己添加访问器吗?为什么或者为什么不?
  3. 奖励:我可以以某种方式指定数据类型吗?

更新:好吧,忘记 attr_accessor,我明白为什么这没有意义。假设我应该添加 attr_accessible 。尽管如此,仍然希望人们对上述问题的想法。

4

1 回答 1

0

不要为模型属性添加attr_accessor- 您将破坏它们的预期功能。 attr_accessible很好并且通常被推荐,但它们仅用于白名单以实现批量分配保护目的。你不需要为你的模型添加任何东西来让 getter/setter 工作;ActiveRecord 通过检查您的数据库模式为您完成这项工作。

如果您想在模型中添加“文档”,请查看annotate gem,它将自动生成字段信息作为模型/夹具/测试/规范顶部的注释。

于 2013-01-25T14:55:17.947 回答