2013-09-27 74 views
0

我一直在努力解决这个问题一段时间,我只是无法得到它的处理。Rails 2 - > Rails 3升级失败,抱怨关于协会

我有哪些on Rails的2.3.18/ruby​​1.8.7

我试图得到它Rails3中运行良好的站点。我遵循指南并完成了视图更新(使用rails_xss)。现在我试图让测试套件通过并运行到以下奇怪的问题:

/Users/jon/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.0.20/lib/active_record/reflection.rb:71: 
in `reflect_on_association': undefined method `[]' 
for #<ActiveRecord::Reflection::AssociationReflection:0x00000100b607a0> (NoMethodError) 
from /Users/jon/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord- 3.0.20/lib/active_record/autosave_association.rb:138:in `has_many' 
from /projects/mau/app/models/studio.rb:7:in `<class:Studio>' 
from /projects/mau/app/models/studio.rb:3:in `<top (required)>' 
... 
from /Users/jon/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/railties-3.0.20/lib/rails/application.rb:134:in `initialize!' 
from /Users/jon/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/railties-3.0.20/lib/rails/application.rb:77:in `method_missing' 
from /projects/mau/config/environment.rb:5:in `<top (required)>' 
from /projects/mau/spec/spec_helper.rb:3:in `require' 
from /projects/mau/spec/spec_helper.rb:3:in `<top (required)>' 

看似相关的代码位将是我的Studio模型有很多artistsArtist模型源自User

class Studio < ActiveRecord::Base 
    has_many :users 
    ... 
end 

class Artist < User 
    ... 
end 

class User < ActiveRecord::Base 
    belongs_to :studio 
    ... 
end 

我还有项目restful_authentication,并计划撕了出来,但希望我能得到一个测试套件运行之后做到这一点。在这一点上,我无法运行任何东西,因为只要我访问其中一个有问题的对象,就会失败。

我已经研究过升级红宝石(1.9.3),但仍遇到同样的问题。

我已经用调试器深入挖掘过,但找不到任何相关的东西。

我试过用完整的类名和外键指定belongs_to/has_many关系 - 没有区别。

我已经尝试了各种版本的Rails 3.0.x从3.0.1到3.0.20。没有效果。同样的问题。

我试过所有复数和单数组合的符号为has_manybelongs_to符号。

最糟糕的是,我有一些关于不同物体的其他关系,似乎很愉快地设置。他们不涉及User模型,这让我担心它是restful_authentication位。

我不能,为了我的生活,弄清楚是什么。如果任何人有任何想法或以前见过这个,我会喜欢一些帮助。

我试图去到Rails 3.0.20的目的是向前滚动到3.1,然后从那里3.2。在我推进之前,我真的想在3.0.20上获得一个半稳定版本。

感谢,提前任何提示/技巧 罗杰斯

回答

0

我找到了问题的根源。

对于旧版本(Rails 2.3.18),我使用的是has_many_polymorphs。这个插件不再适用于Rails3。我升级到了“Rails 3 compatible version”这里https://github.com/jystewart/has_many_polymorphs,它与Rails 3.2兼容,但不是3.0。在这个宝石代码ActiveRecord::Reflection::ClassMethods。该补丁不会像Rails 3.0.x那样构建关联。

我想是时候迁移到ActiveRecord's native:polymorphic支持。