首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用从其他(mongoid/rails)继承的命名空间和引用模型的正确方法是什么?

使用从其他(mongoid/rails)继承的命名空间和引用模型的正确方法是什么?
EN

Stack Overflow用户
提问于 2013-10-06 17:53:53
回答 1查看 780关注 0票数 2

我有一个HandlingScenario模型,它是从Scenario继承下来的。如下所示:

代码语言:javascript
复制
## models/scenario.rb
class Scenario
  include Mongoid::Document
end

## models/scenarios/handling_scenario.rb
class Scenarios::HandlingScenario < Scenario
  include Mongoid::Document
  belongs_to :user, :inverse_of => :handling_scenarios  # In the `User` model, the reference is `has_many :handling_scenarios`
end

但是,当我试图访问HandlingScenario类时,我遇到了麻烦:

代码语言:javascript
复制
➜  rails c
Loading development environment (Rails 3.2.12)
2.0.0-p247 :001 > User.first.handling_scenarios
LoadError: Expected /Users/christoffer/Projects/my_project/app/models/scenarios/handling_scenario.rb to define HandlingScenario

此外,当我试图通过浏览器访问时,我会得到以下错误:

代码语言:javascript
复制
Started GET "/scenarios/handling_scenarios" for 127.0.0.1 at 2013-10-06 19:41:29 +0200
Processing by Scenarios::HandlingScenariosController#index as HTML
  MOPED: 127.0.0.1:27017 QUERY        database=my_project_development collection=users selector={"$query"=>{"_id"=>"518f599683c336fb87000003"}, "$orderby"=>{:_id=>1}} flags=[:slave_ok] limit=-1 skip=0 batch_size=nil fields=nil (0.3998ms)
Completed 500 Internal Server Error in 7ms

NameError - uninitialized constant HandlingScenario:

控制器的作用是:

代码语言:javascript
复制
## controllers/scenarios/handling_scenarios_controller.rb
class Scenarios::HandlingScenariosController < ScenariosController
  def index
    @handling_scenarios = current_user.handling_scenarios
  end
end

我的路线是:

代码语言:javascript
复制
## config/routes.rb
namespace :scenarios do
  resources :handling_scenarios do
    member do
      ...
    end
  end
end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-07 08:53:26

对关系'has_many :handling_scenarios‘使用has_many选项,这样rails就知道模型handling_scenario在文件场景/:handling_scenarios_:handling_scenarios中:

代码语言:javascript
复制
## models/user.rb
class User
   include Mongoid::Document
   has_many :handling_scenarios, class_name: "Scenarios::HandlingScenario"
end

请参阅:http://mongoid.org/en/mongoid/docs/relations.html

此外,您不需要在场景中包括Mongoid::Document::HandlingScenario,因为它是从场景继承的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19211962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档