【发布时间】:2015-10-22 15:36:06
【问题描述】:
我需要一些帮助来重组 Rails 应用程序。您可以在下面找到更多详细信息。主要问题:
我根据@Nathan 的建议修改了代码。离天堂更远了,但仍能闻到一些硫磺味。
- 已解决:为什么会出现错误:“类报告的超类不匹配”
- 已解决:我能否提供一些指导方针,如何在 Rails4 中构建复杂的命名空间、扩展和 STI?
- 服务器重新启动后,我在 Spock 主页上收到错误消息:--“无法自动加载常量 Bridge,预期...路由在这里... app/models/spock/report/bridge.rb 定义它"--刷新页面后,错误消失了。但是,仍然表明一些问题。每次服务器重新启动后,这都是可重现的。提示:可能是自动加载问题...欢迎提出任何想法。
环境:
- WEBrick 1.3.1
- Rails 4.0.9
- Ruby 2.1.5
错误详情:
Unable to autoload constant Bridge, expected ...route goes here... bridge.rb to define it
app/views/spock/spock/index.html.erb:11:in `block in _app_views_spock_spock_index_html_erb___3895075684249237486_132397353980'
app/views/spock/spock/index.html.erb:6:in `map'
app/views/spock/spock/index.html.erb:6:in `_app_views_spock_spock_index_html_erb___3895075684249237486_132397353980'
文件结构:
/app/controllers/spock/spock_controller.rb
/app/controllers/spock/marketplaces_controller.rb
/app/controllers/spock/reports_controller.rb
/app/modules/spock/spock_connector.rb
/app/modules/spock/report.rb
/app/modules/spock/report/bridge.rb
/app/modules/spock/report/metric.rb
文件:
# application.rb
...
config.autoload_paths += Dir[Rails.root.join('app', 'models', 'spock', '{**}')]
...
# routes.rb
namespace :spock do
get '/', :to => 'spock#index'
resources :marketplaces, only: [] do
resources :reports, only: [:show]
end
# spock_controller.rb
module Spock
class SpockController < ApplicationController
def index
@report_categories = Spock::Report.distinct.pluck(:category)
...
# marketplaces_controller
module Spock
class MarketplacesController < SpockController
end
end
# reports_controller
module Spock
class ReportsController < MarketplacesController
helper SpockHelper
...
# spock_connector.rb
module Spock
class SpockConnector < ::ActiveRecord::Base
self.abstract_class = true
establish_connection "spock_#{Rails.env}"
end
end
# report.rb
module Spock
class Report < SpockConnector
attr_accessor :legal_entity
end
end
# bridge.rb
module Spock
class Bridge < Report
...
# metric.rb
module Spock
class Metric < Report
...
数据库:
/* reports table */
id, type, category,
1 Spock::Bridge Bridge
2 Spock::Metric Metric
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4