如何将datamapper观察者类分离到与模型类不同的文件中?

时间:2010-07-20 10:10:34

标签: ruby model datamapper observer-pattern

当我尝试将dm-observer类拆分为与模型类不同的文件时,我遇到了错误。如果我把它全部放在一个文件中,它以前工作正常。

# test_observer.rb
require 'dm-observer'

class TestObserver
  include DataMapper::Observer
  observe Test 

  before :create do
      # does funky stuff
  end 
end 

# test.rb  
require 'dm-core'
require File.dirname(__FILE__) + '/test_observer'

class Test
  include DataMapper::Resource

  property :id, Serial
  property :name, String
  property :state, Integer
end

每次我需要Test类时,都会遇到错误:

uninitialized constant TestObserver::Test (NameError)

我不确定为什么TestObserver ::被添加到类名前面。我有一种感觉,我没有把要求放在正确的地方,但我已经尝试了一切,但它仍然不会很好。非常感谢任何帮助。

谢谢!

1 个答案:

答案 0 :(得分:1)

在声明Test类之前,您需要test.rb,这需要test_observer 。你应该删除这一行:

require File.dirname(__FILE__) + '/test_observer'

并按顺序要求文件:

要求'测试'

要求'test_observer'