缺少在模型类上声明的属性

时间:2013-01-25 14:47:43

标签: ruby-on-rails-3 activerecord

使用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. Bonus:我能以某种方式指定数据类型吗?
  4. 更新:好的忘了attr_accessor然后,我明白为什么这没有意义。我们假设我应该添加attr_accessible。仍然希望人们对上述问题有所了解。

1 个答案:

答案 0 :(得分:0)

为模型属性添加attr_accessor - 您将破坏其预期的功能。 attr_accessible很好并且通常会被推荐,但只有在mass-assignment protection目的的白名单中才需要它们。您无需在模型中添加任何内容即可使getter / setter工作; ActiveRecord通过检查数据库架构为您完成此操作。

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