所以我收到了这个错误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
答案 0 :(得分:1)
我认为当您在模型中指定外键时就像在此处一样
has_one :access_to_finance, :foreign_key => :scorecard_id
您还必须像这样指定类
has_one :access_to_finance, :foreign_key => :scorecard_id, :class_name => :AccessToFinance