我在我的 Rails 应用程序中集成了一些非 Rails 模型表。一切都很顺利,我设置模型的方式是:
class Change < ActiveRecord::Base
establish_connection(ActiveRecord::Base.configurations["otherdb_#{RAILS_ENV}"])
set_table_name "change"
end
这样我就可以使用
Change
所有现有记录的模型 find
等等。现在,当记录添加到表中时,我想运行某种通知。由于模型从未通过
Change.new
创建和 Change.save
使用 ActiveRecord::Observer
不是一个选项。有什么方法可以让我在添加新记录时执行一些 Rails 代码?我看了
delayed_job
但我不太明白,如何设置。我想象它围绕着一个 cron 作业发展,它选择自作业上次运行以来创建的所有行,然后为每一行调用相应的 Rails 代码。更新 目前正在看 Javan 的 Whenever ,看起来它可以解决'从cron部分运行rails代码'。
最佳答案
是的,您要么需要某种后台任务处理器(Delayed::Job 是一种流行的处理器,或者您可以使用 Daemon 库或类似库伪造自己的)或设置按某种时间表运行的 cronjob .如果您想经常检查(例如每分钟),我建议使用 Delayed::Job 路线,如果时间更长(每小时左右),cron 作业就可以了。
走 DJ 路线,您需要创建一个作业来检查新记录,处理它们(如果有),然后重新排队作业,因为每个作业在完成时都标记为“已完成”。
- 乔恩
关于ruby-on-rails - 从 Rails 应用程序中监视数据库表的外部更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2560233/