gpt4 book ai didi

ruby-on-rails - Rails 模型分为多个定义

转载 作者:数据小太阳 更新时间:2023-10-29 08:51:29 26 4
gpt4 key购买 nike

我的几个 Rails 模型中有一些逻辑,我想拆分成单独的文件。

具体来说,这是这些模型独有的逻辑,而不是模型之间共享的逻辑。对于那种情况,我知道问题/混合和问题 like this .

由于我们在这里处理的是 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 出现问题(例如,加载用户模型时未加载 Devise)。

有没有好的方法可以做到这一点,或者我在这里龙骨?利用 Ruby 的开放类是 Rails 之外的常见习惯用法。

最佳答案

将以下内容添加到 config/application.rb

config.autoload_paths += Dir["#{config.root}/lib"]

这将根据 Rails 的需要从 integrations/ext 自动加载类。 (这恰好是 DHH 的要点也包含 app/model/concerns 文件的方式)。

(我更改了我的自动加载以匹配 @denis.pelin 的内容。我错过了 integrations/lib/ 中,所以上面应该足够了自动加载)

关于ruby-on-rails - Rails 模型分为多个定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11813488/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com