我正在构建一个可能会有大量模型的 Rails 应用程序。现在假设我需要有用户,每个用户都有一个个人博客
我一直在一个单独的引擎(我们称之为 AuthEngine)上开发与用户相关的部分,它封装了用户模型、身份验证等。当时这似乎是最好的方法
与此同时,我的同事正在开发另一个引擎来处理博客功能(我们称之为 BlogEngine)。现在他需要访问存储在另一个引擎中的用户数据。他通过定义:
BlogEngine.user_class = "AuthEngine::User"
这样,他可以轻松地询问用户数据,即使它没有存储在同一个引擎中。当我们想要定义模型之间的关系时,问题就来了
他可以轻松地说每篇博文都属于一个用户
has_one :user, :class_name => BlogEngine.user_class
但据我所知,他不能指定每个用户都有多个帖子,因为用户模型在另一个引擎中
这样做的后果是他不能做类似的事情@user.posts
,而是不得不做Post.find_all_by_user(@user)
有没有更优雅的方法来处理这个问题?我还考虑了每个引擎可以简单地在应用程序内部生成模型,去除封装的可能性,但是由于模型的数量会迅速增长,我认为这会使应用程序更加混乱,并且不那么可维护