Rails:HABTM 关系。检索具有两个引用的对象
Rails: HABTM Relationship. Retrieve the object that has two references
我有这些模型
class User < ActiveRecord::Base
has_and_belongs_to_many :chats
end
和
class Chat < ActiveRecord::Base
has_and_belongs_to_many :users
end
这是一个 many_to_many 关系,我想要的是恢复与 2 个用户存在的唯一可能的聊天
例如
me = current_user
user_to_chat = User.find(any_user_except_me)
chat = Chat.new
me.chats.each do |current_chat|
if current_chat.users.include?(user_to_chat)
chat = current_chat
break
end
end
执行此查询的更好方法是什么?
谢谢!
您可以使用 #find
,这将 return 集合中第一个块不是 false
的项目。
chat = me.chats.find { |c| c.users.include?(user_to_chat) }
您也可以使用交集:
chat = (me.chats & user_to_chat.chats).first
我有这些模型
class User < ActiveRecord::Base
has_and_belongs_to_many :chats
end
和
class Chat < ActiveRecord::Base
has_and_belongs_to_many :users
end
这是一个 many_to_many 关系,我想要的是恢复与 2 个用户存在的唯一可能的聊天
例如
me = current_user
user_to_chat = User.find(any_user_except_me)
chat = Chat.new
me.chats.each do |current_chat|
if current_chat.users.include?(user_to_chat)
chat = current_chat
break
end
end
执行此查询的更好方法是什么?
谢谢!
您可以使用 #find
,这将 return 集合中第一个块不是 false
的项目。
chat = me.chats.find { |c| c.users.include?(user_to_chat) }
您也可以使用交集:
chat = (me.chats & user_to_chat.chats).first