0

Rails アプリケーションには 2 つのモデルがあります。

class Item < ActiveRecord::Base
end

class ItemLocalization  < ActiveRecord::Base
end

同様に、2 つの工場があります。

factory :item do
  sequence(:name) { |n| "item #{n}" }
  description "this is a description"      
  association :locale, :factory => :locale_deCH          
  item_group
end

factory :item_localization do
  sequence(:name) { |n| "item #{n}" }
  description "this is a description"      
  association :locale, :factory => :locale_deCH          
  item
  user
  reviewer
end

_localization サフィックスを持つ 2 番目のファクトリがある場合、FactoryGirl は DuplicationError を返します。

    Rack::File headers parameter replaces cache_control after Rack 1.5.
    /Users/user/.rvm/gems/ruby-1.9.3-p327@rails329-ec/gems/factory_girl-4.1.0/lib/factory_girl/decorator.rb:10:in `method_missing': Factory already registered: item_localization (FactoryGirl::DuplicateDefinitionError)
        from /Users/user/.rvm/gems/ruby-1.9.3-p327@rails329-ec/gems/factory_girl-4.1.0/lib/factory_girl/decorator/disallows_duplicates_registry.rb:6:in `register'
        from /Users/user/.rvm/gems/ruby-1.9.3-p327@rails329-ec/gems/factory_girl-4.1.0/lib/factory_girl.rb:65:in `block in register_factory'
        from /Users/user/.rvm/gems/ruby-1.9.3-p327@rails329-ec/gems/factory_girl-4.1.0/lib/factory_girl.rb:64:in `each'
        from /Users/user/.rvm/gems/ruby-1.9.3-p327@rails329-ec/gems/factory_girl-4.1.0/lib/factory_girl.rb:64:in `register_factory'
        from /Users/user/.rvm/gems/ruby-1.9.3-p327@rails329-ec/gems/factory_girl-4.1.0/lib/factory_girl/syntax/default.rb:20:in `factory'
        from /Users/user/Sites/ec/spec/factories.rb:62:in `block in <top (required)>'
        from /Users/user/.rvm/gems/ruby-1.9.3-p327@rails329-ec/gems/factory_girl-4.1.0/lib/factory_girl/syntax/default.rb:49:in `instance_eval'
        from /Users/user/.rvm/gems/ruby-1.9.3-p327@rails329-ec/gems/factory_girl-4.1.0/lib/factory_girl/syntax/default.rb:49:in `run'
        from /Users/user/.rvm/gems/ruby-1.9.3-p327@rails329-ec/gems/factory_girl-4.1.0/lib/factory_girl/syntax/default.rb:7:in `define'
        from /Users/user/Sites/ec/spec/factories.rb:1:in `<top (required)>'
        from /Users/user/.rvm/gems/ruby-1.9.3-p327@rails329-ec/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:245:in `load'
        from /Users/user/.rvm/gems/ruby-1.9.3-p327@rails329-ec/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:245:in `block in load'
        from /Users/user/.rvm/gems/ruby-1.9.3-p327@rails329-ec/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:236:in `load_dependency'
        from /Users/user/.rvm/gems/ruby-1.9.3-p327@rails329-ec/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:245:in `load'
        from /Users/user/.rvm/gems/ruby-1.9.3-p327@rails329-ec/gems/factory_girl-4.1.0/lib/factory_girl/find_definitions.rb:16:in `block in find_definitions'
        from /Users/user/.rvm/gems/ruby-1.9.3-p327@rails329-ec/gems/factory_girl-4.1.0/lib/factory_girl/find_definitions.rb:15:in `each'
        from /Users/user/.rvm/gems/ruby-1.9.3-p327@rails329-ec/gems/factory_girl-4.1.0/lib/factory_girl/find_definitions.rb:15:in `find_definitions'
        from /Users/user/.rvm/gems/ruby-1.9.3-p327@rails329-ec/gems/factory_girl_rails-4.1.0/lib/factory_girl_rails/railtie.rb:26:in `block in <class:Railtie>'
        from /Users/user/.rvm/gems/ruby-1.9.3-p327@rails329-ec/gems/activesupport-3.2.11/lib/active_support/lazy_load_hooks.rb:34:in `call'
        from /Users/user/.rvm/gems/ruby-1.9.3-p327@rails329-ec/gems/activesupport-3.2.11/lib/active_support/lazy_load_hooks.rb:34:in `execute_hook'
        from /Users/user/.rvm/gems/ruby-1.9.3-p327@rails329-ec/gems/activesupport-3.2.11/lib/active_support/lazy_load_hooks.rb:43:in `block in run_load_hooks'
        from /Users/user/.rvm/gems/ruby-1.9.3-p327@rails329-ec/gems/activesupport-3.2.11/lib/active_support/lazy_load_hooks.rb:42:in `each'
        from /Users/user/.rvm/gems/ruby-1.9.3-p327@rails329-ec/gems/activesupport-3.2.11/lib/active_support/lazy_load_hooks.rb:42:in `run_load_hooks'
        from /Users/user/.rvm/gems/ruby-1.9.3-p327@rails329-ec/gems/railties-3.2.11/lib/rails/application/finisher.rb:59:in `block in <module:Finisher>'
        from /Users/user/.rvm/gems/ruby-1.9.3-p327@rails329-ec/gems/railties-3.2.11/lib/rails/initializable.rb:30:in `instance_exec'
        from /Users/user/.rvm/gems/ruby-1.9.3-p327@rails329-ec/gems/railties-3.2.11/lib/rails/initializable.rb:30:in `run'
        from /Users/user/.rvm/gems/ruby-1.9.3-p327@rails329-ec/gems/railties-3.2.11/lib/rails/initializable.rb:55:in `block in run_initializers'
        from /Users/user/.rvm/gems/ruby-1.9.3-p327@rails329-ec/gems/railties-3.2.11/lib/rails/initializable.rb:54:in `each'
        from /Users/user/.rvm/gems/ruby-1.9.3-p327@rails329-ec/gems/railties-3.2.11/lib/rails/initializable.rb:54:in `run_initializers'
        from /Users/user/.rvm/gems/ruby-1.9.3-p327@rails329-ec/gems/railties-3.2.11/lib/rails/application.rb:136:in `initialize!'
        from /Users/user/.rvm/gems/ruby-1.9.3-p327@rails329-ec/gems/railties-3.2.11/lib/rails/railtie/configurable.rb:30:in `method_missing'
        from /Users/user/Sites/ec/config/environment.rb:5:in `<top (required)>'
        from /Users/user/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from /Users/user/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from /Users/user/Sites/ec/spec/spec_helper.rb:3:in `<top (required)>'
        from /Users/user/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from /Users/user/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from /Users/user/Sites/ec/spec/models/organization_spec.rb:1:in `<top (required)>'
        from /Users/user/.rvm/gems/ruby-1.9.3-p327@rails329-ec/gems/rspec-core-2.12.2/lib/rspec/core/configuration.rb:789:in `load'
        from /Users/user/.rvm/gems/ruby-1.9.3-p327@rails329-ec/gems/rspec-core-2.12.2/lib/rspec/core/configuration.rb:789:in `block in load_spec_files'
        from /Users/user/.rvm/gems/ruby-1.9.3-p327@rails329-ec/gems/rspec-core-2.12.2/lib/rspec/core/configuration.rb:789:in `each'
        from /Users/user/.rvm/gems/ruby-1.9.3-p327@rails329-ec/gems/rspec-core-2.12.2/lib/rspec/core/configuration.rb:789:in `load_spec_files'
        from /Users/user/.rvm/gems/ruby-1.9.3-p327@rails329-ec/gems/rspec-core-2.12.2/lib/rspec/core/command_line.rb:22:in `run'
        from /Users/user/.rvm/gems/ruby-1.9.3-p327@rails329-ec/gems/rspec-core-2.12.2/lib/rspec/core/runner.rb:80:in `run'
        from /Users/user/.rvm/gems/ruby-1.9.3-p327@rails329-ec/gems/rspec-core-2.12.2/lib/rspec/core/runner.rb:17:in `block in autorun'

サフィックス「_localization」はどういうわけか予約されていますか? Railsには問題がないようです。

4

1 に答える 1

0

問題が見つかりました。「_localization」サフィックスとは何の関係もありませんでした。むしろ、モデル ItemLocalization を作成するときに、Rails はフォルダー test/factories に同じ名前のファクトリーを作成し、rspec/factories の下で同じファクトリーを使用しました。

test/factories フォルダーからすべてのファイルを削除すると、問題が解決しました。

于 2013-02-04T01:10:57.967 に答える