app/models/: 用来存放model文件(M层),Rails中用Active Record来实现model的,Active Record 是 MVC 中的 M(模型),处理数据和业务逻辑。Active Record 负责创建和使用需要持久存入数据库中的数据。Active Record 实现了 Active Record 模式,是一种对象关系映射系统。
Active Record 提供了很多功能,其中最重要的几个如下:
表示模型和其中的数据;
表示模型之间的关系;
通过相关联的模型表示继承关系;
持久存入数据库之前,验证模型;
以面向对象的方式处理数据库操作;
可以看到,程序会自动帮我们在app/controller下生成一个新的文件叫nodes_controller.rb,对应到app/views/下会帮我们生成一个nodes的文件夹,nodes/文件夹下自动生成一个new_html.erb文件,这个文件就是对应到nodesController中定义的new方法的视图文件。此外,在config/routes.rb文件中会添加 get 'nodes/new'这个路由,这个是用来指定当在客户端通过 ip:port/nodes/new进行http请求时,路由会通过这个直接对应到Controller中的nodes_controller的new方法来进行处理,创建一个 NodesController 实例,运行 new 方法。注意,在上面这段代码中,即使 new 方法是空的也没关系,因为默认会渲染 new.html.erb 视图,除非指定执行其他操作
class NodesController < ApplicationController
def new
end
end
Active Record 是 MVC 中的 M(模型),处理数据和业务逻辑。Active Record 负责创建和使用需要持久存入数据库中的数据。Active Record 实现了 Active Record 模式,是一种对象关系映射系统。也就是在Rails中我们只需要通过代码生成Active Record模型,Rails会自动把模型映射到数据库(Sqlite、MySQL、Postgresql、Mongdb等等)中的数据表,不需要我们书写操作数据库的SQL语句,就能实现对数据库的增删改查等功能。
多约定少配置:
使用其他编程语言或框架开发程序时,可能必须要编写很多配置代码。大多数的 ORM 框架都是这样。但是,如果遵循 Rails 的约定,创建 Active Record 模型时不用做多少配置(有时甚至完全不用配置)。Rails 的理念是,如果大多数情况下都要使用相同的方式配置程序,那么就应该把这定为默认的方法。所以,只有常规的方法无法满足要求时,才要额外的配置。
命名约定:
默认情况下,Active Record 使用一些命名约定,查找模型和数据表之间的映射关系。Rails 把模型的类名转换成复数,然后查找对应的数据表。例如,模型类名为 Book,数据表就是 books。Rails 提供的单复数变形功能很强大,常见和不常见的变形方式都能处理。如果类名由多个单词组成,应该按照 Ruby 的约定,使用驼峰式命名法,这时对应的数据表将使用下划线分隔各单词。因此:
外键 - 使用 singularized_table_name_id 形式命名,例如 item_id,order_id。创建模型关联后,Active Record 会查找这个字段;
主键 - 默认情况下,Active Record 使用整数字段 id 作为表的主键。使用 Active Record 迁移创建数据表时,会自动创建这个字段;