0

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

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

请问有什么想法吗?

4

1 回答 1

2

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

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

对于您无法控制的外部事务,您需要使用触发器或发布/订阅(如果可用)连接到该数据库。

于 2013-09-30T14:59:40.503 回答