【Ruby on Rails】Model中关于保存之前的原值和修改状态
今天在Rails的Model中遇到了一个问题——
当我从Model类中获取了一个ActiveRecord对象,对其进行了一系列修改(尚未保存),我该如何确定究竟哪些修改了呢?
(设Model为Option,相关的的参数为correct)
我本来采取的方法是——在数据表中新增一个ori_correct参数,每次对象保存之前都和correct做到同步,这样一来,是不是correct字段发生了修改也就得以判断了。
但是这样的缺点也显而易见——如果以后参数个数很多的话,岂不是得每一个都得来一个相应的ori_字段?这样的话每个都要双份的建立字段,想象也觉得并不合理,总感觉Rails应该对这类问题有一个较好的解决方案。事实上的确如此,我在StackOverFlow上看到了这样的一个用法 :
Check out ActiveModel::Dirty (available on all models by default). The documentation is really good, but it lets you do things such as: 1 @user.street1_changed? # => true/false
也就是在相应字段后面添加_changed?,这样一来问题直接解决,亲测有效。
然而很快另外一个问题又来了,既然知道了是否被改变,那该如何知道原来的值是什么呢?
同样的,我在StackOverFlow上找到了解决办法
Appending
_was
to your attribute will give you the previous value.
同样的,亲测有效。
以上,两个问题完美解决。
(关于更多的关于ActiveModel::Dirty所支持的各种神奇功能,请在http://api.rubyonrails.org/中输入ActiveModel::Dirty)
- 自相矛盾:一个进程可以自成死锁么?
- 数据库安全·开发加密插件
- wordpress无法安装这个包。: PCLZIP_ERR_MISSING_FILE (-4) : Missing archive file 'C:WINDOWSTEMP/wordpress-4.
- 数据库安全·数据加密
- Medium网友开发了一款应用程序 让学习算法和数据结构变得更有趣
- 数据库安全·Token 认证
- 数据库安全·用户/角色认证
- 防止在训练模型时信息丢失 用于TensorFlow、Keras和PyTorch的检查点教程
- 帝国cms如何调用栏目别名作为分类标题?[!--classname--]标签不能用
- 高级软件工程师(面试题)
- 高级软件工程师 2016-9月更新
- Httpclient 调用 HTTPS 加密通道的Restful服务
- 使用 Jersey 调用 Restful 服务
- 【学术】将吴恩达的第一个深度神经网络应用于泰坦尼克生存数据集
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 小程序使用 组件库 vant-weapp详细教程
- 小程序数据渲染根据返回值计算百分比并且显示
- JS获取当前系统时间戳的方法
- TensorFlow 2建立神经网络分类模型——以iris数据为例
- 突击并发编程JUC系列-阻塞队列 BlockingQueue
- Matlab建立SVM,KNN和朴素贝叶斯模型分类绘制ROC曲线
- Python安装TensorFlow 2、tf.keras和深度学习模型的定义
- TensorFlow2 keras深度学习:MLP,CNN,RNN
- Flutter ListView 局部刷新数据、ListView点赞收藏
- R语言公交地铁路线网络图实现数据挖掘实战
- R语言风险价值VaR(Value at Risk)和损失期望值ES(Expected shortfall)的估计
- R语言机器学习实战之多项式回归
- 5000字!带你零距离接触websocket!
- 使用 GitLab CI 和 Docker 自动部署 Spring Boot 应用
- 玩转StyleGAN2模型:教你生成动漫人物