Ruby on rails 3 缺少在模型类上声明的属性
当您使用生成器创建模型时,使用Rails 3(尚未确认这在Rails 2.x中是否不同),例如: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 generate model Person first_name:string last_name:string
它不会在创建的Person模型类上声明first_name或last_name属性。我知道它仍然有效,也就是说,迁移会在数据库中创建字段,由于动态语言的魔力,我可以在运行时设置它们。然而,我认为模型类是一种“文档”,用于说明模型可用的属性。因此,对我来说很奇怪,生成器没有添加它们
我一直在补充:
attr_accessor :first_name, :last_name
给我的模型课。甚至更好。但即便如此,它也不清楚数据类型是什么
我只是好奇其他人的想法:
attr\u访问器
——您将破坏它们的预期功能attr_accessible
很好,通常推荐使用,但它们仅用于白名单目的。你不需要为你的模型添加任何东西来让getter/setter工作;ActiveRecord通过检查数据库模式为您做到这一点
如果您想在模型中使用“文档”,请查看gem,它将自动生成模型/装置/测试/规格顶部的字段信息作为注释。Ok我调整了上面的帖子。你说得对,attr_访问器没有意义。但是,如果实践是将模型留空,那么希望使用我的模型类的人会在哪里寻找可用的属性呢?数据库?移民?这不是有点错误吗?/db/schema.rb文件保存了ActiveRecord看到的模式快照(包装为一次迁移),您可以配置IDE在模型类中向您显示此信息-默认情况下RubyMine会这样做。如果您更喜欢在模型中看到它被写出来,那么我建议使用“annotate”-这就是它被构建的原因:)。
schema.rb
可以用于查找模型的属性