Ruby引导
Active Record
第一天
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。