Active Record

RailsGuid

第一天

ORM、面向对象、对象关系映射。

关系型数据库和非关系型数据库的理解。区别

乐观锁和悲观锁。

SQL是非常优秀的DSL(领域建模语言).

Active Record针对关系型数据库比较好的实现。

  • type - 让模型使用单表继承;
  • (association_name)_type - 多态关联的类型;
  • (table_name)_count - 缓存关联对象的数量。例如,posts 表中的 comments_count 字段,缓存每篇文章的评论数;(用法)
b.build_logo 好好理解下。(关系间创建)

外键所在表: belongs_to 是子表

查询都是平行的:即返回类型都是相同的 主从级别

include查询

数据验证 结果 valid? errors

上传下载

第二天

迁移

迁移(提交后就不要更改了,更改的话创建新的迁移即可) change(可逆的)、down/up

索引的原理(为什么会那么快)

rails g 命令(可以自己写一套模板)

支持的类型修饰符

RAILS_ENV=test + rake db:migrate(等命令)

验证

Active Record 数据验证

主要是验证数据存入数据库之前的对象的状态。

  • 使用Active Record内建的数据验证帮助方法。

validate

valid? / invalid?

数据验证帮助方法

attr_accessor(虚拟字段)

validate :name on create对应指定验证 create的时候验证name

自己写验证方法

blank? present?

回调

事务

加!的保存操作,不成功会抛出异常

模型 关联

外键、主键、类名

A has_one :b class_name: ‘B’, foreign_key: b_id

多对多关系

accepts_nested_attributes_for

Rails 代理

多态关联

自连接 (多对多,反向)

关联回调

关联扩展

Ruby中的概念

Ruby

一种简单快捷的面向对象编程而创的脚本语言。

RVM

用于帮助安装Ruby环境,管理多个Ruby环境,管理开发的Ruby应用使用哪个开发环境。Ruby环境不仅仅是Ruby本身,还包括依赖的第三方Ruby插件。都由RVM管理。

Rails

Web开发框架,基于Ruby。

RubyGems

RubyGems是一个方便而强大的Ruby程序包管理器(package manager),类似RedHat的RPM,它将一个Ruby应用程序打包到一个gem里,作为一个安装单元。无需安装,最新的Ruby版本中包含RubyGems。

Gem

Gem是封装起来的Ruby应用程序或代码库。 注:在终端使用的gem命令是通过RubyGems管理Gem包。

Gemfile

定义你的应用依赖的第三方包,bundle根据该配置寻找这些包。

Rake

Rake是一门构建语言,和make类似。Rake是Ruby编写的,支持自己的DSL用来处理和维护Ruby程序。Rails用rake来扩展完成多种不同任务,如数据库初始化、更新、迁移等。

Rakefile

Rakefile是由Ruby编写,Rake的命令执行是由Rakefile文件定义的。

Bundle

相当于多个RubyGems批处理。在配置文件gemfile里说明你的应用依赖哪些第三方包,它自动帮助下载安装多个包,并且会下载这些包依赖的包。

###Ruby变量 Ruby与大部分脚本语言不同,它有自己的命名规范(采用CoC)。

注意:Ruby中常量与伪变量都没有类型(如Java中的String、Int、Long等等)。

  • 常量(Constants):常量首字母必须大写(常用的规范是整个变量名单词都大写),常量应只赋值一次。
  • 局部变量:由小写字母或下划线(_)开头。
  • 实例变量:实例变量由@开头,它的范围限制在self对象内.两个不同的对象,即使属于同一个类,也可以拥有不同的值的实例变量。从对象外部来看,实变量不能改变,甚至观察(比如,Ruby中的实变量从来不是共用的),除非方法由程序员明确声明.像全局变量一样,实变量在初始前的值是nil。
  • 类变量:其实就是类的静态变量,跟Java很像。
  • 全局变量:由$开头,它们可以在程序的任何位置访问到.在初始化前,全局变量有一个特殊的值nil。