在ActiveRecord中执行后回滚

时间:2015-01-30 03:57:14

标签: ruby-on-rails ruby activerecord sqlite rails-activerecord

我正在为Rails中的sqlite3数据库构建一个沙箱,以便人们可以自己查询数据。现在我只是调用这样的执行:

@results = ActiveRecord::Base.connection.execute(params[:query])

在破坏性命令的情况下,我希望在得到结果后每次都回滚它。有什么好办法呢?

1 个答案:

答案 0 :(得分:1)

我在这里找到了一些:

  

Active Record类 ActiveRecord :: Base 具有名为connection()的方法   它使用返回与MySQL(或其他一些)数据库的有效连接   config / database.yml数据库设置。

     

connection()方法的返回值是MysqlAdpater类的对象   (或[some-other-database]适配器)。这里有一些有用的方法   那个对象:

     
      
  • 执行 - 执行SQL查询。对于“SELECT ...”,查询将返回Mysql :: Result类(或者Ruby的其他结果集类)   数据库接口)。
  •   
  • 插入 - 执行SQL查询并返回上次插入的内容
  •   
  • 更新,删除 - 执行SQL查询并返回受影响的行数
  •   
  • begin_db_transaction - 执行SQL查询'BEGIN'(事务开始)
  •   
  • commit_db_transaction - 执行SQL查询'COMMIT'(确认交易)
  •   
  • rollback_db_transaction - 执行SQL查询'ROLLBACK'(回滚事务)
  •   
     

还有方法select_all和select_one,但我们没有   建议使用它,因为尝试的效率低下   将所有选定的值提取到内存中。

查看此Documentation