一、心得体会
1、今天完成了什么?
- 今天主要自己提问自己解答了13道考试题
2、今天收获了什么?
- size、bytesize的区别
- yield和self的区别
3、今天犯了什么错误?
- 感觉明天要放假了,对自己有了松懈,学习效率不高
4、今天的状态如何?
- 注意力不集中
5、明天还有哪些工作需要完成?
- 继续看考试题
6、今天一个重要的领悟是什么?
二、读书笔记
几道考试题
13、”中国 2013″.size= ”中国 2013″.bytesize=?
size 字符数
bytesize 字节数
14、yield self 的用法, 写个例子
所有的"方法(methods)"隐式跟上一个"块(block)"参数。
块参数也可以明确给定,形式就是在参数前面加一个"&",比如 def fn(arg1, arg2, &block) end,其中的 &block 就是明确给定的块参数。
块参数的动作,可以通过调用 call() 方法执行,还可以用 yield 来执行 —— yield 其实就是一个语法糖。
所以以下几种写法常常是等价的:
#method receives an invisible block argument
def foo1()
yield 1
end
#specify it explicitly
def foo2(&block)
yield 1
end
#yield is equal to block.call
def foo3(&block)
block.call(1)
end
#function call
foo1 {|x| puts x} # => 1
foo2 {|x| puts x} # => 1
foo3 {|x| puts x} # => 1
15、rails 三种工作环境的区别(development, testing, and production)
开发、测试、生产
16、Rails是什么
web开发框架
- 多约定、少配置
- DRY
17、什么是重构?
18、Active Record是什么?
Active Record是MVC中的M(模型),负责处理数据和业务逻辑,AR负责创建和使用需要持久存入数据库中的数据。
Active Record实现了AR模式,是一种对象关系映射系统。
更新
一次更新多个属性时使用这种方法最方便,如果想批量更新多个记录,可以使用类方法update_all
User.update_all "max_login_attempts = 3, must_change_password = 'true'"
19、什么数据验证
在存入数据库之前,AR还可以验证模型,模型验证有很多方法,可以检查属性值是否不为空,是否是唯一的、没有在数据中出现过,等等。
把数据存入数据库之前进行验证是十分重要的步骤,所以调用save和update方法时会做数据验证。验证失败时返回false,此时不会对数据库做任何操作,这两个方法都有对应的爆炸方法(save!和update!)。爆炸方法要严格一些,如果验证失败,抛出ActiveRecord::RecordInvalid异常,下面举个简单的例子:
class User < ApplicationRecord
validates :name, presence: true
end
user = User.new
user.save
user.save!
下面这个模式是什么意思?
/\A[+-]?\d+\z/
20、什么是严格验证?
还可以采用严格验证,当对象无效时抛出ActiveModel::StrictValidationFailed异常。
21、什么是条件验证?
有时,只有满足特定条件时做验证才说的通,条件可通过:if和:unless选项指定,这两个选项的值可以是符号、字符串、Proc或数组。
:if选项指定何时不做验证,使用:unless选项。
4.5 条件验证
有时,只有满足特定条件时要验证才说的通,条件可通过:if和:unless选项指定,这两个选项的值可以是符号、字符串、Proc或数组。
22、什么是自定义验证,举个例子?
如果内置的数据验证辅助方法无法满足需求,可以选择自己定义验证使用的类或方法。
4.6.1 自定义验证类
自定义的验证类继承自ActiveModel::Validator,必须实现validate方法,其参数是验证的记录,然后验证这个记录是否有效,自定义的验证类通过validates_with方法调用。
23、怎么处理验证错误,举个例子?
除了前面介绍的valid?和invalid方法之外,Rails还提供了很多方法用来处理errors集合,以及查询对象的有效性。
24、什么是Active Record回调?
ActiveModel::Errors的实例包含所有的错误,键是每个属性的名称,值是一个数组,包含错误消息字符串。
errors[]用于获取某个属性上的错误消息,返回结果是一本由属性所有错误消息字符串组成的数组,每个字符串表示一个错误消息。如果字段上没有错误,则返回空数组。
25、对象的生命周期是什么?
在Rails应用正常运作期间,对象可以是被创建、更新和删除,AR为对象的生命周期提供了钩子,使我们可以控制应用及其数据。