轨道上的红宝石 3 - 缺少在模型类上声明的属性


使用 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。不过,仍然希望人们对上述问题的看法。

不要 为模型属性添加attr_accessor - 您将破坏其预期功能。 attr_accessible很好,通常推荐使用,但只有出于批量分配保护目的的白名单才需要它们。 您无需向模型添加任何内容即可使吸气器/设置器工作;活动记录通过检查数据库架构来为您执行此操作。

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

相关内容

  • 没有找到相关文章