zoukankan      html  css  js  c++  java
  • 【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)

  • 相关阅读:
    IDEA中好用的插件
    Win10安装Docker
    win10系统关闭此电脑的文件夹
    postgreSQL主键自增长
    【设计模式】工厂模式
    vue2.0实现倒计时的插件(时间戳 刷新 跳转 都不影响),转载
    springCloud中的组件学习
    使用springBoot+jsp+redis解决单一用户问题
    使用HtmlUnit动态获取网页数据
    java爬取网站中所有网页的源代码和链接
  • 原文地址:https://www.cnblogs.com/HansBug/p/6528558.html
Copyright © 2011-2022 走看看