首先承认自己是从 java 过来的 最近在读 ruby-china,也尝试写自己的东西 rails 给开发带来了很多便利,同时也带来一些不解
作为初学者,不明白难道 rails 有什么潜在的机制能智能的判断处理这些问题吗
Java 的 try...catch
对应是 Ruby 的 begin...rescue
吧
RubyChina 是用 MongoDB , 没有了关系数据库的事务概念
而且 Rails 是面向 Web 开发,对事务的要求应该没有企业开发那么高吧
我觉得其实应该是有事务的,但是这个网站对于数据要求没有那么高,所以没写也能理解 controller 中为何要异常处理?我觉得 java 中很多时候是把异常处理当做函数返回了,而 ruby 由于语言的关系,返回值类型、数量上都比 JAVA 更灵活,所以很少见到异常处理
@congteng 这是 rails api doc 里面的一些 文档 我稍微整理了一下 http://jhjguxin.sinaapp.com/2012/03/24/rails%e4%b8%ad%e7%9a%84%e4%b8%9a%e5%8a%a1%e5%a4%84%e7%90%86active-record-transactions/
ruby 异常都是运行时异常,通常往外传播就好了,只有 java 有这种烦人的 checked exception 机制强制捕获各种你不处理的异常,java 8 对这种状态改善了不少
rails 可以用数据库事务,没有编程性事务,mongo 没有事务,但你可以用原子操作,只要修改限于一个 document 中就能用原子操作完成。我见过用编程事务操作 mongo 数据的,还不如用 sql 数据库 ...