Tôi đã sau thiết lập:Yêu cầu phụ thuộc để có được Rails lớp con
app/models/my_module/service.rb
module MyModule
class Service < ActiveRecord::Base
def self.types
self.subclasses
end
def self.raw_types
self.types.map { |c| c.name.split("::").last }
end
end
end
require_dependency "my_module/service/rack"
require_dependency "my_module/service/rails"
require_dependency "my_module/service/sinatra"
app/models/my_module/dịch vụ/rack.rb:
module MyModule
class Service::Rack < Service
end
end
app/models/my_module/dịch vụ/rails.rb:
module MyModule
class Service::Rails < Service
end
end
app/models/my_module/dịch vụ/sinatra.rb:
module MyModule
class Service::Sinatra < Service
end
end
đó làm việc cho đến nay, nhưng bây giờ câu hỏi của tôi:
Tại sao tôi phải thêm ba dòng:
require_dependency "my_module/service/rack"
require_dependency "my_module/service/rails"
require_dependency "my_module/service/sinatra"
vào tệp service.rb của tôi?
Nếu tôi không thêm ba dòng:
MyModule::Service.raw_types
=> []
Nếu tôi thêm ba dòng:
MyModule::Service.raw_types
=> ["Rack", "Rails", "Sinatra"]
Bất kỳ ai một ý tưởng?
Btw: Tôi sử dụng Ruby 2.0.0-preview1, Rails 4.0.0.rc1 và tạo một công cụ Rails mới với
rails plugin new MyModule
Liệu MyModule :: Service.types làm việc? –
Là câu hỏi tại sao phải yêu cầu các tập tin hoặc lý do tại sao mảng được dân cư? Khi bạn yêu cầu các tệp bạn thêm 3 lớp mà tất cả các dịch vụ phân lớp, do đó 'Service.subclasses' trả về 3 lớp đó. – Kris
Ý tưởng: một trong những tập tin con khỉ-bản vá lỗi 'lớp con' vào lớp. – User