gpt4 book ai didi

ruby-on-rails - 自定义 rails has_many 关联(通过 pg 数组)

转载 作者:数据小太阳 更新时间:2023-10-29 06:39:45 24 4
gpt4 key购买 nike

所以基本上我想知道是否有一些通用方法来定义自己的关联类型。一些细节:

我有一个模型 conversations有一个 PG 数组列 user_ids .因此,要检索我需要运行的用户对话: select conversations.* from conversations where USER_ID = ANY(conversations.user_ids)

finder_sql它的 friend 现在已被弃用,我真的很想知道实现这个伪 has_many 关联的最佳方法是什么?

目前我只使用如下方法:

 def conversations
Conversation.where("#{id} = ANY (conversations.users)")
end

所以基本上我正在考虑实现我自己的 ActiveRecord::Associations::CollectionAssociation并想知道是否有一些好的引用资料,或者您是否可以建议从哪里开始


最佳答案

我建议规范化你的模型,让另一个表保持用户和对话之间的关系,例如,构建一个模型

用户对话

你的关系将是

class User < ApplicationRecord
has_many :users_conversations, :dependent => :destroy
has_many :conversations, :through => :users_conversations
end

class Conversation < ApplicationRecord
has_many :users_conversations, :dependent => :destroy
has_many :users, :through => :users_conversations
end

那么你就可以轻松做到

#users for each specific conversation
@users = Conversation.find(1).users
#conversations for each specific user
@conversations = User.find(1).conversations

除非你想保持相同的方式或数组,否则你可以这样做

@users = User.where(:id => Conversation.find(1).user_ids)

如果 user_ids 存储为数组,如 [1,10,20]因此,它将正常工作并返回用户

关于ruby-on-rails - 自定义 rails has_many 关联(通过 pg 数组),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13952744/

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