如何在rails Observer上实现ruby远程数据库

时间:2013-09-30 14:49:54

标签: ruby-on-rails ruby

我需要观察远程数据库表。我正在查看以下代码:

class RemotetableObserver < ActiveRecord::Observer

  # Need to watch the remote table
  ActiveRecord::Base.establish_connection "remoteDB"
  observe :remotetable 

  def after_create(row)
    doStuff.create(row)
  end
end

我添加了

config.active_record.observers = :remotetable_observer

到我的application.rb配置文件,我的database.yml连接到远程数据库。

我得到NameError: uninitialized constant remotetable所以我创建了另一个模型:

# remotetable.rb   
class Remotetable < ActiveRecord::Base
  # establish_connection(ActiveRecord::Base.configurations["otherdb_#{RAILS_ENV}"])
  ActiveRecord::Base.establish_connection "remoteDB"
  self.table_name = "remotetable"
end

但仍然遇到同样的错误:NameError: uninitialized constant remotetable

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

  

我需要观察远程数据库表。

ActiveRecord观察者不观察表,他们观察对象。因此,当您更新用户时,它可以观察到用户正在更新并将其自身注入用户生命周期。

如果您对无法控制的外国交易采取行动,则需要使用触发器或pub / sub(如果可用)挂钩到该数据库中。