我正在为Rails中的sqlite3数据库构建一个沙箱,以便人们可以自己查询数据。现在我只是调用这样的执行:
@results = ActiveRecord::Base.connection.execute(params[:query])
在破坏性命令的情况下,我希望在得到结果后每次都回滚它。有什么好办法呢?
答案 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。