首页 > 其他分享 >Rails5中AR的新特性

Rails5中AR的新特性

时间:2024-03-08 16:33:34浏览次数:20  
标签:ActiveRecord update 特性 Rails5 AR Relation key

ApplicationRecord

在Rails4中所有的模型都继承自ActiveRecord::Base,不过在Rails5中新引进了一个叫ApplicationRecord的类,存放在:app/models/application_record.rb中,所有Rails5应用都会有这个类, 它的内容非常简单:

 就是一个继承ActiveRecord::Base的抽象类,作用就是为整个应用程序模型提供一个自己的基类

 

 OR语法支持

Rails5中提供了对两个AR Relation对象的OR方法:

 需要注意的是如果你在第一个Relation中是用了:limit distinct offset这三个方法的话,那么就必须在后面的Relation中也使用相同的方法,否则的话就会报错

 最好是在结尾使用:

 ActiveRecord::Relation#cache_key

Rails中使用缓存是很常见的行为,通常我们要缓存一组查询出来的记录,需要手动的设置缓存的key

 Rails5中提供了ActiveRecord::Relation#cache_key

 上面最后一行,Rails5提供的cache_key和我们自己设置的很相似,分别有5个组成部分分别是:

 AR Relation调用update会触发callbacks和validates

 也就是亦可以通过下面的方法更新记录:

更新操作被按ID分解成多个update语句,并且其中每一个都会执行callback和validates, 要注意的是如果你要更新的记录不必要触发callback或validates,那么因为性能原因最好使用 update_all方法。

更新记录时,不更新updated_at/updated_on

 忽略字段

 Belongs_to关联,默认必填

 新的 after_{create,update,delete}_commit 

支持在migration中添加comments 

 

 

 

参考链接:

      http://www.jianshu.com/p/05719f9082fc

 

标签:ActiveRecord,update,特性,Rails5,AR,Relation,key
From: https://www.cnblogs.com/hello-ruby/p/18061295

相关文章

  • Window10使用Docker-Desktop自带k8s和dashboard配置本地k8s开发环境
    安装Docker-DesktopInstallDockerDesktoponWindows下载地址:https://docs.docker.com/desktop/install/windows-install/打开Docker-Desktop,启用Kubernetes打开Docker-Desktop,启用Kubernetes点击左上角:设置,选择Kubernetes选项卡,启用Kubernetes,点击Apply&restart注意:最......
  • echarts报表生成pdf文件
    完整的demo如下:<!DOCTYPEhtml><html><head><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/><title>Balken</title><scriptsrc="static/echarts/echarts.js"......
  • Archery SQL 审核查询平台
     ArcherySQL审核查询平台 archer Archery项目是基于archer二次开发而来goInception 一个集审核、执行、备份及生成回滚语句于一身的MySQL运维工具JetBrainsOpenSource 为项目提供免费的IDE授权......
  • P6121 [USACO16OPEN] Closing the Farm G
    原题链接题解抽象化抽象成点和边,对于抹除一个点,判断整个图是否联通等价于建立一个点(被抹除点的前一个点),判断这个点与周围点相连后,累积合并次数是否等于点数减一code#definelllonglong#include<bits/stdc++.h>usingnamespacestd;llfa[200005];llfinds(llnow){ret......
  • ElasticSearch基础篇
    一、基本概念1、类比数据库的概念索引(Index):类似于数据库中的“数据库”,是某类文档的集合。类型(Type):类似于数据库中的“表”,是索引中的一个逻辑分区。文档(Document):类似于数据库中的“记录”,是一个可被索引的信息载体。分片(Shard):Elasticsearch会将索引数据细分为多个分片......
  • Markdown学习
    Markdown学习1.前言:Markdown:一种纯文本格式的标记语言,几乎所有在线网站均支持;推荐文本编辑器:Typora;文件后缀:xxx.md;样式:标题、字体、链接、表格、图片、代码等;2.标题:一级标题:"#"+“blank”+标题名称+"enter";二级标题:"##"+“blank”+标题名称+"enter"。三级标题:"###"+......
  • FFU、WIM、ESD、VHD和VHDX都是与Windows操作系统部署、备份和虚拟化相关的文件格式。
    FFU(FullFlashUpdate)文件格式是微软开发的,用于在Windows设备上进行固件更新和完整系统部署的一种映像文件格式。FFU文件包含了设备的完整磁盘映像,包括所有分区、文件系统和数据。这种格式允许精确复制存储设备的内容,提供了一种高效且可靠的方式来恢复、更新或部署设备。下面是对F......
  • day58 动态规划part15 代码随想录算法训练营 392. 判断子序列
    题目:392.判断子序列我的感悟:理解难点:听课笔记:我的代码:通过截图:代码易错点:老师代码:扩展写法-双指针:classSolution:defisSubsequence(self,s:str,t:str)->bool:#初始化两个指针,分别指向s和t的第一个字符i,j=0,0#......
  • 【Java】Integer.parseInt()和Integer.valueOf()的区别
    1.Integer.parseInt()和Integer.valueOf()的区别区别1Integer.parseInt()将字符串转换为基本类型int,返回一个int类型值。inti=Integer.parseInt(Strings);Integer.valueOf()将字符串转换为Integer对象,返回一个Integer对象。Integeri=Integer.valueOf(Strings);......
  • jdk21新特性
    jdk21新特性内容基本就是收集了下官方说明,然后自己汉化了下觉得有必要记录的。原文请看文章末尾编码字符集默认编码为UTF-8,而不是取用当前运行操作系统的编码。-Dfile.encoding=UTF-8可以不再设置JVM变更G1单块支持31M=>512MG1使用单标记bitmap类名检测1.4......