我有一个模型下Company
调用foo ::酒吧从酒吧:: BazController
class Company::Employee
我对我的员工的轮廓控制器命名空间,Employee
class Employee::ProfilesController < EmployeeController
我设置的命名空间下@employee
在那个控制器里
@employee = Company::Employee.find(...)
但是我有错误
未定义的方法`发现”的员工:模块
似乎Company::Employee
解析为承载Employee::ProfilesController
的Employee
模块。
当我在byebug那里,我有一个额外的消息warning: toplevel constant Employee referenced by Company::Employee
。模型类如何引用控制器模块?
我尝试了一些东西,包括::Company::Employee
和require 'company/employee'
,但没有任何变化。
有问题的文件是在
app/controllers/employee/profiles_controller.rb
app/models/company/employee.rb
跟踪
NoMethodError (undefined method `find' for Employee:Module):
app/controllers/employee/profiles_controller.rb:30:in `set_company_employee'
Rendered C:/dev/Ruby22-x64/lib/ruby/gems/2.2.0/gems/actionpack-5.0.0.beta3/lib/action_dispatch/middleware/templates/rescues/_source.html.erb (7.0ms)
Rendered C:/dev/Ruby22-x64/lib/ruby/gems/2.2.0/gems/actionpack-5.0.0.beta3/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (4.5ms)
Rendered C:/dev/Ruby22-x64/lib/ruby/gems/2.2.0/gems/actionpack-5.0.0.beta3/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (1.
0ms)
Rendered C:/dev/Ruby22-x64/lib/ruby/gems/2.2.0/gems/actionpack-5.0.0.beta3/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb within rescue
s/layout (2726.3ms)
Rendered C:/dev/Ruby22-x64/lib/ruby/gems/2.2.0/gems/web-console-3.1.1/lib/web_console/templates/_markup.html.erb (0.5ms)
Rendered C:/dev/Ruby22-x64/lib/ruby/gems/2.2.0/gems/web-console-3.1.1/lib/web_console/templates/_inner_console_markup.html.erb within layouts/inlined_string (
1.0ms)
Rendered C:/dev/Ruby22-x64/lib/ruby/gems/2.2.0/gems/web-console-3.1.1/lib/web_console/templates/_prompt_box_markup.html.erb within layouts/inlined_string (0.5
ms)
Rendered C:/dev/Ruby22-x64/lib/ruby/gems/2.2.0/gems/web-console-3.1.1/lib/web_console/templates/style.css.erb within layouts/inlined_string (0.5ms)
Rendered C:/dev/Ruby22-x64/lib/ruby/gems/2.2.0/gems/web-console-3.1.1/lib/web_console/templates/console.js.erb within layouts/javascript (2507.8ms)
Rendered C:/dev/Ruby22-x64/lib/ruby/gems/2.2.0/gems/web-console-3.1.1/lib/web_console/templates/main.js.erb within layouts/javascript (0.5ms)
Rendered C:/dev/Ruby22-x64/lib/ruby/gems/2.2.0/gems/web-console-3.1.1/lib/web_console/templates/index.html.erb (4939.1ms)
类
class Employee::ProfilesController < EmployeeController
before_action :set_company_employee
...
def set_company_employee
if params[:employee_id]
# Line that throws error below :
@employee = (Company::Employee).find(params[:employee_id])
else
# Many employee profiles, bad request
flashy_now(:error, :select_employee_profiles)
redirect_back
end
@company = @employee.company
end
class Company::Employee < Professional
include Invitable
belongs_to :company
belongs_to :entity
delegate :name, to: :company, prefix: true
delegate :name, to: :entity, prefix: true, allow_nil: true
end
class Professional
include Mongoid::Document
include Mongoid::Timestamps
include SimpleEnum::Mongoid
include Likeable
include UserProfile
...
belongs_to :user
...
配置
- 红宝石2.2.4p230(2015年12月16日修订版53155)[x64的的mingw32]
- 滑轨5.0.0beta3解释如何自动加载
显示完整的类和与第n行的全部错误信息umbers。 – smathy
在这里,你去。我的自定义模块很可能与问题无关,他们只是添加一些字段和委托的东西与ActiveSupport :: Concern –
什么玩笑,如果我之前执行一行,需要好的类通过其他协会,如' Company.first.employees.first.class',它实际上解决了这个问题。但是,只要我删除此行,它就会停止工作。如果任何人都可以解释... –