【问题标题】:How to implement automatic reflection of direct SQL Updates of the underlying database, in an ActiveRecord in Ruby on Rails?如何在 Ruby on Rails 的 ActiveRecord 中实现底层数据库直接 SQL 更新的自动反射?
【发布时间】:2010-12-25 07:40:03
【问题描述】:
我是 Ruby on Rails 的新手,我有一个(可能是幼稚的)问题:
我想在 ActiveRecord 中实现底层数据库的直接 SQL 更新的反射(最后在生成的 html 中)。 “直接更新”是指绕过 ActiveRecord 方法更新数据库,例如通过 MySQL 控制台。我想这里可以使用 MySQL 触发器来调用一些存储过程,从而导致重新加载适当的 ActiveRecord。
是否在 ActiveRecord/Ruby on Rails 中自动处理这种情况?有人实现了这个场景吗?有人可以推荐使用其他 MVC 框架来反映映射数据库中的直接变化吗?
【问题讨论】:
标签:
ruby-on-rails
orm
stored-procedures
activerecord
triggers
【解决方案1】:
我认为最好的解决方案是在浏览器中使用 AJAX 例程,定期检查应用程序中的“last_updated”时间戳。
该应用程序还将有一个定期例程,该例程具有确定数据库是否已更改的某种方式,或者通过查看表记录上次更新表的时间,或者通过向数据库询问最大时间戳对于“updated_at”列。如果应用程序发现事情发生了变化,它会加载新信息并将其缓存以用于来自浏览器的请求。如果应用程序告诉浏览器事情发生了变化,那么来自浏览器的后续请求将是更新页面中更改的信息。
您不希望用户的浏览器启动对数据库的点击,这就是他们询问 Rails 应用程序的原因。 rails 应用程序不希望浏览器按需执行此操作;它充当限制器/瓶颈。