Rails - NoMethodError - 未定义的方法'范围'对于AccessToFinance:模块

时间:2014-07-17 15:21:06

标签: ruby-on-rails ruby inheritance rails-activerecord

所以我收到了这个错误NoMethodError - undefined method 'scoped' for AccessToFinance:Module:,我从大约下午1点起读了很多,我不知道什么是错的。

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

app/models/scorecards/alpha/financial_generic_alpha_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

app/models/access_to_finance.rb

class AccessToFinance < ActiveRecord::Base
  belongs_to :scorecard
  has_one :appropriate_product
  has_one :insurance_policy
end

app/models/appropriate_product.rb

class AppropriateProduct < ActiveRecord::Base
  belongs_to :access_to_finance
end

app/models/insurance_policy.rb

class InsurancePolicy < ActiveRecord::Base
  belongs_to :access_to_finance
end

在路线文件

resource :access_to_finance, :controller => 'access_to_finance' do
  resources :appropriate_products
  resources :insurance_policies
end

控制器命名为

app/controllers/access_to_finance_controller.rb

class AccessToFinanceController < ElementController
end

app/controllers/appropriate_products_controller.rb

class AppropriateProductsController < ElementController
end

app/controllers/insurance_policies_controller.rb

class InsurancePoliciesController < ElementController
end

据我所知,一切都被正确命名,因为它的所有1-1关系。所以没有必要复数什么?我想我会发疯了。

更新

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

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

但不知怎的,一个尚未提交的文件获取.ignore为什么会这样?超出我的范围,我们删除了.ignore并提交了文件,它找到了模型并且工作正常。所以我仍然像刚刚发生的那样坐在这里

希望这个helpes

1 个答案:

答案 0 :(得分:1)

我认为当您在模型中指定外键时就像在此处一样

has_one :access_to_finance, :foreign_key => :scorecard_id 

您还必须像这样指定类

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