我今天将Rails更新为Rails 4.1(从4.0开始),现在我的seed.rb不再起作用了,这就是问题所在:
这一行
ActiveRecord::FixtureSet.create_fixtures("#{Rails.root}/test/fixtures", "marketplace_categorias")
给我这个错误:
rake aborted!
Circular dependency detected while autoloading constant MarketplaceCategoria
但在控制台上,同一行给了我这个:
LoadError: Unable to autoload constant MarketplaceCategoria, expected /home/user/Documents/wsrails/myproject/app/models/marketplace/marketplace_categoria.rb to define it
正如您所看到的,我有一个命名空间模型,定义如下
class Marketplace::MarketplaceCategoria < ActiveRecord::Base
self.table_name = 'marketplace_categorias'
....
end
所以Rails试图自动加载错误的常量,它应该加载Marketplace :: MarketplaceCategoria,而不是MarketplaceCategoria。
添加,我可以通过控制台创建记录,没有任何问题,当我在控制台上运行命令时:
Marketplace::MarketplaceCategoria.table_name
=>"marketplace_categorias"
向我显示正确的表名。
我在这里做错了什么?
plus:我的迁移
class MarketplaceCategoria < ActiveRecord::Migration
def change
create_table :marketplace_categorias do |t|
t.string :nome
t.string :slug, :unique => true
t.timestamps
end
add_index :marketplace_categorias, :slug, :unique => true
end
end