2013-07-15 170 views
0

只是想开始说我没有做过这个话题的谷歌,并且无法找到适用于我自己的用例的任何东西。MongoMapper问题与堆栈级别太深

我有一个简单的小广告服务器。没有为Ad一个模型,两个嵌入式型号叫ImpressionClick - 像这样:

class Ad 

    include MongoMapper::Document 

    key :name, String 
    key :image, String 
    key :url, String 

    has_many :clicks 
    has_many :impressions 

end 

class Click 

    include MongoMapper::EmbeddedDocument 

    key :ip, String 
    timestamps! 

end 

class Impression 

    include MongoMapper::EmbeddedDocument 

    key :ip, String 
    timestamps! 

end 

这里是我得到的错误:

SystemStackError - stack level too deep: 
/home/deployer/.rbenv/versions/1.9.3-p125/lib/ruby/gems/1.9.1/gems/mongo_mapper-0.12.0/lib/mongo_mapper/plugins/keys.rb:194 

这是,这是该地区发生在:

@ad.impressions << Impression.new({:ip => request.ip}) 
@ad.save 

现在,我的模型中没有任何回调,这是很多人发生这种错误的原因。

任何人有任何见解?

谢谢。

回答

0

我似乎已经找到答案。 timestamps!是造成这种情况的原因。我在网上看到的其他例子与回调以及ActiveSupport运行它们的方式有关。我只是没有意识到timestamps!算作一个。