Ruby on rails Rails-命名错误-未定义方法';范围为';用于访问财务:模块

Ruby on rails Rails-命名错误-未定义方法';范围为';用于访问财务:模块,ruby-on-rails,ruby,inheritance,rails-activerecord,Ruby On Rails,Ruby,Inheritance,Rails Activerecord,所以我得到了这个错误NoMethodError-未定义的方法'scoped'来访问finance:Module:,从下午1点开始我已经读了很多,我不知道出了什么问题 这个故事的工作流程如下所示 app/models/scorecards/alpha/financial\u generic\u alpha\u scorecard.rb class FinancialGenericAlphaScorecard < GenericAlphaScorecard has_one :access_

所以我得到了这个错误
NoMethodError-未定义的方法'scoped'来访问finance:Module:
,从下午1点开始我已经读了很多,我不知道出了什么问题

这个故事的工作流程如下所示

app/models/scorecards/alpha/financial\u generic\u alpha\u scorecard.rb

class FinancialGenericAlphaScorecard < GenericAlphaScorecard
  has_one :access_to_finance, :foreign_key => :scorecard_id 
  has_one :appropriate_product, :through => :access_to_finance
  has_one :insurance_policy, :through => :access_to_finance

end
class AccessToFinance < ActiveRecord::Base
  belongs_to :scorecard
  has_one :appropriate_product
  has_one :insurance_policy
end
class AppropriateProduct < ActiveRecord::Base
  belongs_to :access_to_finance
end
class InsurancePolicy < ActiveRecord::Base
  belongs_to :access_to_finance
end
class AccessToFinanceController < ElementController
end
class AppropriateProductsController < ElementController
end
class InsurancePoliciesController < ElementController
end
app/models/property\u product.rb

class FinancialGenericAlphaScorecard < GenericAlphaScorecard
  has_one :access_to_finance, :foreign_key => :scorecard_id 
  has_one :appropriate_product, :through => :access_to_finance
  has_one :insurance_policy, :through => :access_to_finance

end
class AccessToFinance < ActiveRecord::Base
  belongs_to :scorecard
  has_one :appropriate_product
  has_one :insurance_policy
end
class AppropriateProduct < ActiveRecord::Base
  belongs_to :access_to_finance
end
class InsurancePolicy < ActiveRecord::Base
  belongs_to :access_to_finance
end
class AccessToFinanceController < ElementController
end
class AppropriateProductsController < ElementController
end
class InsurancePoliciesController < ElementController
end
在路由文件中

resource :access_to_finance, :controller => 'access_to_finance' do
  resources :appropriate_products
  resources :insurance_policies
end
控制器被命名为

app/controllers/access\u to\u finance\u controller.rb

class FinancialGenericAlphaScorecard < GenericAlphaScorecard
  has_one :access_to_finance, :foreign_key => :scorecard_id 
  has_one :appropriate_product, :through => :access_to_finance
  has_one :insurance_policy, :through => :access_to_finance

end
class AccessToFinance < ActiveRecord::Base
  belongs_to :scorecard
  has_one :appropriate_product
  has_one :insurance_policy
end
class AppropriateProduct < ActiveRecord::Base
  belongs_to :access_to_finance
end
class InsurancePolicy < ActiveRecord::Base
  belongs_to :access_to_finance
end
class AccessToFinanceController < ElementController
end
class AppropriateProductsController < ElementController
end
class InsurancePoliciesController < ElementController
end
app/controllers/insurance\u policies\u controller.rb

class FinancialGenericAlphaScorecard < GenericAlphaScorecard
  has_one :access_to_finance, :foreign_key => :scorecard_id 
  has_one :appropriate_product, :through => :access_to_finance
  has_one :insurance_policy, :through => :access_to_finance

end
class AccessToFinance < ActiveRecord::Base
  belongs_to :scorecard
  has_one :appropriate_product
  has_one :insurance_policy
end
class AppropriateProduct < ActiveRecord::Base
  belongs_to :access_to_finance
end
class InsurancePolicy < ActiveRecord::Base
  belongs_to :access_to_finance
end
class AccessToFinanceController < ElementController
end
class AppropriateProductsController < ElementController
end
class InsurancePoliciesController < ElementController
end
类别保险政策控制器
据我所知,所有东西的命名都是正确的,因为它们都是1-1关系。所以没有必要将任何东西多元化??我想我要发疯了

更新

所以我尝试了一些更疯狂的事情。我的大四学生过来帮我。在挖掘过程中,我们发现当access_to_finance.rb模型位于文件夹中时,它会从加载路径中删除,我们有一些代码将动态文件夹添加到加载路径中

 Dir.glob("#{Rails.root}/app/models/*[^(.rb|.ignore)]").each {|dir| config.autoload_paths << dir }

Dir.glob(“#{Rails.root}/app/models/*[^(.rb |.ignore)]”)。每个{Dir | config.autoload_路径我认为当您在像这里这样的模型中指定外键时

has_one :access_to_finance, :foreign_key => :scorecard_id 
您还必须像这样指定类

has_one :access_to_finance, :foreign_key => :scorecard_id, :class_name => :AccessToFinance 

不,它仍然没有被找到,基本上,文件根本没有被加载。但是,在你这样的调用中,有针对性是非常好的。因此,再加上一个好的编码。