在Ruby on Rails中插入,更新或删除事件时,使用另一个数据库更新一个数据库

时间:2014-03-18 04:27:44

标签: ruby-on-rails

我在rails应用程序上写了一个ruby。我在这里使用一个这样的模型:

class teacher < ActiveRecord::Base
 self.table_name = "teachers"
end

教师表由另一个独立的应用程序填充。在我的应用程序中,我使用redis存储一些关于教师的特定数据。问题是,最初我在raire任务的帮助下用教师表中的数据填充了redis。

但是,只要教师表中发生任何插入,更新或删除,redis数据就会变得不一致。所以我希望每当教师表中发生任何保存或更新时,数据也会以redis形式存储,我的意思是某些事件或基于中断的事情。我是否可以在我的应用程序中执行此操作而不更改我已经提到的其他应用程序,其中实际存储了教师数据?如果可能的话,请提出一些想法。

1 个答案:

答案 0 :(得分:0)

如果你没有使用Redis,我建议使用after_save回调(每次保存模型时触发 - 创建/更新):

#app/models/teacher.rb
Class Teacher < ActiveRecord::Base
    after_save :update

    def update
        Model.create({attr: self.value})
    end
end

但是,由于您使用的是Redis,因此需要同步数据跨渠道。我可能仍然使用after_save,但使用逻辑来确定要更新的Redis值