上下文:
- 我有三个模型:
User
、ProjectUser
和Message
。 Messages
通过item_id
和item_type
具有多态连接,可以属于User
或ProjectUser
Users
有多个ProjectUsers
目标:在ProjectUser
模型中,我想定义一个名为general_messages
的has_many
关系,以获取与ProjectUser
或ProjectUser.user
相关的所有Messages
。连接看起来像这样:
ProjectUser.joins(:user).joins('JOIN messages AS general_messages ON general_messages.item_id IN (project_users.id, users.id)')
字符串
注意:我希望能够使用常规ActiveRecord方法连接和过滤。即ProjectUser.joins(:general_messages).where(general_messages: { ...WHERE CLAUSE })
,因此通过定义has_many
关系来实现这一点非常重要
1条答案
按热度按时间q5lcpyga1#
好吧,这些都是根据你的需要量身定制的,但有不同的事情要做。
使用普通的ActiveRecord,我会使用lambda作为作用域参数,以定义关系将做什么。
下面这行还没有测试过,但是你可以用它来玩一下,看看你能得到什么。
来源:https://api.rubyonrails.org/v7.0.6/classes/ActiveRecord/Associations/ClassMethods.html#method-i-has_many
字符串