Ruby on rails 3 缺少在模型类上声明的属性

Ruby on rails 3 缺少在模型类上声明的属性,ruby-on-rails-3,activerecord,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属性。我知道它仍然有效,也就是说,迁移会在数据库中创建字段,由于动态语言的魔力,我可以在运行时设置它们。然而,我认为模型类是一种“文档”,用于说明模型可用的属性。因此,对我来说很奇怪,生成器没有添

当您使用生成器创建模型时,使用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\u访问器吧,我明白为什么这没有意义了。假设我应该添加attr_accessible。尽管如此,我仍然希望人们对上述问题有何看法。

    不要为模型属性添加
    attr\u访问器
    ——您将破坏它们的预期功能
    attr_accessible
    很好,通常推荐使用,但它们仅用于白名单目的。你不需要为你的模型添加任何东西来让getter/setter工作;ActiveRecord通过检查数据库模式为您做到这一点


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

    Ok我调整了上面的帖子。你说得对,attr_访问器没有意义。但是,如果实践是将模型留空,那么希望使用我的模型类的人会在哪里寻找可用的属性呢?数据库?移民?这不是有点错误吗?/db/schema.rb文件保存了ActiveRecord看到的模式快照(包装为一次迁移),您可以配置IDE在模型类中向您显示此信息-默认情况下RubyMine会这样做。如果您更喜欢在模型中看到它被写出来,那么我建议使用“annotate”-这就是它被构建的原因:)。
    schema.rb
    可以用于查找模型的属性