我的几个 Rails 模型中有一些逻辑,我想将它们拆分为单独的文件。
具体来说,这是这些模型独有的逻辑,而不是模型之间共享的逻辑。对于这种情况,我知道这样的问题/混合和问题。
由于我们在这里处理 Ruby,似乎要走的路是拥有多个类定义。例如:
# in app/models/user.rb
class User < ActiveRecord::Base
...
end
# in app/lib/integrations/ext/user.rb
class User
...
end
我在这里面临的问题现在需要在正确的位置进行模型扩展。由于自动加载,我被迫明确要求模型和扩展。我目前的最大努力是在初始化器中预加载用户模型及其扩展:
# in config/initializers/model_extensions.rb
require_dependency 'models/user'
require_dependency 'integrations/ext/user.rb'
但这会产生其他 gem 的问题(例如,加载 User 模型时未加载设计)。
有什么好方法可以做到这一点,还是我在这里不自在?利用 Ruby 的开放类是 Rails 之外的常见习惯用法。