我在 app/models/user.rb 中有一个用户模型。我的 User 类有很多与外部服务 Intercom 相关的操作。现在我有一堆方法,比如register_intercom_user
, update_intercom_data
,ping_intercom
等等。所有这些都与 User 对象有关。
我有几个选择:
- 使用这些方法创建一个 mixin(最简单的选项)。但后来我污染了我的用户命名空间。
- 在我的 lib/ 目录中创建一个 intercom.rb 文件,文件名为
def new(user)
. 虽然这很痛苦,因为它远离 User 类并且并不意味着耦合。 - 创建一个 app/models/user/intercom.rb 和一个
class User::Intercom; def new(user)...
. 似乎更正确,因为它显示了与用户模型的耦合,但我在其他项目中没有看到这种模式。
我不是在想什么吗?什么是正确的模式?