美文网首页
Day25 心得体会&读书笔记

Day25 心得体会&读书笔记

作者: 柳辉 | 来源:发表于2017-05-29 23:47 被阅读12次

    一、心得体会
    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为对象的生命周期提供了钩子,使我们可以控制应用及其数据。

    相关文章

      网友评论

          本文标题:Day25 心得体会&读书笔记

          本文链接:https://www.haomeiwen.com/subject/mbocfxtx.html