【发布时间】:2014-05-05 04:08:00
【问题描述】:
我正在尝试了解设置模型文件夹的正确方法。我遇到了一些名称解析冲突。
我有一个对应于 db 表的 rails 模型(传输)。导入和导出是传输类型,是传输类固有的。还有一些中间类定义了该层次结构通用的代码。
这是当前的设置方式:
models/
models/transport.rb
models/transport/
models/transport/import.rb
models/transport/import/
models/transport/import/api.rb
models/transport/import/api/
models/transport/import/api/metric.rb
models/transport/import/api/order.rb
models/transport/import/csv.rb
models/transport/import/csv/
models/transport/import/csv/metric.rb
models/transport/import/csv/order.rb
models/transport/export/
models/transport/export/api.rb
...
这里有一些类 sn-ps:
models/transport.rb
class Transport < ActiveRecord::Base
# common transport code
end
models/transport/import.rb
class Transport
class Import < Transport
# common import code
end
end
models/transport/import/api.rb
class Transport
class Import
class Api < Transport::Import
# common api code
end
end
end
models/transport/import/api/metric.rb
class Transport
class Import
class Api
class Metric < Transport::Import::Api
# metric code
end
end
end
end
问题:组织 rails 模型文件夹/命名空间的正确方法是什么?
特别是当您继承功能而不是通过内部命名空间扩展功能时。
当前代码有错误,因为 ruby 认为它继承了它的外部类。我曾考虑使用基本文件夹来避免争用,但想了解其他人在类似情况下会做什么。
models/
models/base/
models/base/transport.rb
models/transport/
models/transport/import.rb
models/transport/import/
models/transport/import/api.rb
【问题讨论】:
-
对于命名空间我使用
module而不是class。rails/ruby很好理解,这很有帮助。
标签: ruby-on-rails ruby model namespaces directory