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。但即便如此,它也不能明确数据类型是什么。
我只是好奇其他人的想法:
- 为什么生成器默认不这样做?
- 您是否自己添加访问器?为什么或为什么不呢?
- 奖励:我可以以某种方式指定数据类型吗?
更新:好吧,忘记attr_accessor,我明白为什么这没有意义。假设我应该添加attr_accessible。不过,仍然希望人们对上述问题的看法。
不要
为模型属性添加attr_accessor
- 您将破坏其预期功能。 attr_accessible
很好,通常推荐使用,但只有出于批量分配保护目的的白名单才需要它们。 您无需向模型添加任何内容即可使吸气器/设置器工作;活动记录通过检查数据库架构来为您执行此操作。
如果您想在模型中使用"文档",请查看注释 gem,该 gem 将在模型/夹具/测试/规格顶部自动生成字段信息作为注释。