Ruby on rails 在rails中创建可读模型

Ruby on rails 在rails中创建可读模型,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我刚开始学习Rails,来自.net背景,我发现从ActiveRecord继承的模型很难理解,因为模型不包含相应的属性。我无法想象一个新的开发人员会接触到一个大型代码,其中模型只包含对其他模型和业务逻辑的引用 从我的观点来看,DataMapper模型更容易掌握,但由于ActiveRecord是事实上的标准,仅仅为了这个小问题而更改ORM感觉很奇怪 数据映射器 活动记录 class Post

我刚开始学习Rails,来自.net背景,我发现从ActiveRecord继承的模型很难理解,因为模型不包含相应的属性。我无法想象一个新的开发人员会接触到一个大型代码,其中模型只包含对其他模型和业务逻辑的引用

从我的观点来看,DataMapper模型更容易掌握,但由于ActiveRecord是事实上的标准,仅仅为了这个小问题而更改ORM感觉很奇怪

数据映射器

活动记录

class Post
我不确定这是否是一个问题,人们是否习惯了没有属性的模型,或者有经验的rails用户如何处理这个问题

我不认为使用数据库管理器或查看大量迁移脚本来查找属性是一种选择


指定attr\u accessible将使模型更具可读性,但我不确定它是否适合解决我的问题?

查看github上的annotate\u models插件。它将在注释块中为每个模型插入注释模式。它可以安装为在迁移时运行。

您不必“查看大量迁移脚本以查找属性”-它们都在db/schema.rb中的一个位置定义。

一些提示:

  • 加载Rails控制台并进入
    Post.column\u name
    快速浏览 属性名称的提醒。
    Post.columns
    为您提供列 对象,它显示数据类型

  • db/schema.rb包含所有 迁移代码在一个地方,所以 可以很容易地看到所有的列 定义

  • 如果您使用的是 体面的编辑器/IDE应该有一种方法 允许您从模型文件跳转 到迁移文件。(例如,Emacs 与ROR或Rinari一起)


annotate_模型很好,我将在我的模型中使用它。即使我更喜欢DataMapper,我还是会坚持使用ActiveRecord,因为它是默认的。您的db/schema.rb文件实际上是查找此信息的位置。我见过的每个使用annotate_模型的项目都有过时的注释。人们忘记运行任务和/或厌倦了模型文件顶部的噪音。
class Post
  include DataMapper::Resource

  property :id,         Serial    # An auto-increment integer key
  property :title,      String    # A varchar type string, for short strings
  property :body,       Text      # A text block, for longer string data.
  property :created_at, DateTime  # A DateTime, for any date you might like.
end
 class Post < ActiveRecord::Base
 end