在rails app中设置设置,而不在db上存储值。

时间:2015-02-08 00:40:03

标签: ruby-on-rails ruby ruby-on-rails-3

基本上我有一个应用程序可以通过Mailgun路由处理传入的电子邮件。现在,根据我收到电子邮件的地址,Mailgun向相应的控制器操作发出请求,并且基本上取决于它是哪个操作,名为department_id的字段:需要分配给正确的部门,因此该部门的人员会收到那封邮件。

现在我知道如何手动执行此操作,并且工作正常,但我想制作一个"设置屏幕"并选择在调用每个操作时应选择哪个部门。现在我知道我可以创建一个db表并处理它,但有没有办法实现这一点而无需创建一个完整的单独表?

谢谢!

1 个答案:

答案 0 :(得分:0)

理论上你可以将数据保存在内存中,但这是一个坏主意,主要是因为:

  1. 除非您使用单个线程运行单个服务器进程,否则您的应用服务器将具有不同的数据副本。这些过程无法保持这些副本的同步,并且您无法同时更新这些副本。
  2. 它不一致。除了进程间同步之外,您只需要一个具有不同数据的服务器进程,以使您的应用程序的逻辑不一致。
  3. 当应用重新启动或崩溃时,您将失去所有修改。
  4. 这正是我们使用DB和其他外部数据支持(redis,memcached,文件等)来存储不同进程共享的数据的原因。

    可接受的解决方案是将此类数据添加到您应用的来源,例如:在Rails初始化程序中。但是,当您尝试在运行时更改它时,您将遇到上述问题。