美文网首页
Rails方法之——transaction(交易)方法

Rails方法之——transaction(交易)方法

作者: 小小修行者 | 来源:发表于2018-09-25 16:01 被阅读0次

transaction方法的使用像这样:

ActiveRecord: :Base.transaction do
  PartyA.withdraw(500) #1)甲方支出500
  PartyB.deposit(500) #2)乙方存入500
end

在transaction do中,要求条件 1)和条件2)需要全部生效的时候数据库才能记录更新,否则全部不生效,数据库rollback。转账交易是transaction(交易)方法最典型的应用场景。
其中,PartyA可用类或实例(@party_a)表示。

transaction的应用场景一般为两张表以上的修改动作。如A表的修改动作成功后,B表的一个动作本来应该同步修改的。但是由于其他原因(通常是验证的问题),B表没有修改成功,这样,A改了,B没改,就出问题了。

相关文章

  • Rails方法之——transaction(交易)方法

    transaction方法的使用像这样: 在transaction do中,要求条件 1)和条件2)需要全部生效的...

  • Rails方法之——pluck

    以上图为例,在控制台中使用 则会返回 可以看出pluck方法重users表中选了每一条数据的两个字段name和ph...

  • Rails方法之——super

    如上图,super.rb中Plane类继承了Car类。子类调用了父类的相同属性时,可以用super调用父类的属性。

  • Rails方法之——.try

    以上图为例,我们在页面中需要进行如下操作: 当bank_cards没有数据,为nil时,页面报错。这里我们就可以用...

  • ActiveRecord::Transaction

    ActiveRecord::Transaction 实现transaction部分的功能。 暴露给我们的方法主要是...

  • ruby-Time/Date1

    鉴于前几天没提到的rails中的时间/日期常用方法,补充下面的方法。rails中常用的取时间节点的方法,对于计算天...

  • rails:unable to monitor director

    用rails命令时报错 解决方法

  • 肖威洞察 | can't activate sqlite

    https://github.com/rails/rails/issues/35387 目前的解决方法是编辑Gem...

  • Rails 辅助方法

    辅助方法是针对某个特定的控制器的,应该放进该控制器对应的辅助文件中。例如,为StaticPages控制器创建的辅助...

  • nil? , .empty? .blank? .present?

    .nil? 和 .empty? 是ruby的方法。 .blank? 是rails的方法。.nil? 判断对象是否存...

网友评论

      本文标题:Rails方法之——transaction(交易)方法

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