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