Я пытаюсь выяснить, если есть один вкладыш, чтобы проверить, если пара находится в HABTMMongoid выбор HABTM
Conversation.in (participant_ids: [current_user.id, Params [: recipient_id]]) .first_or_create
Так что в принципе мне нужно проверить, существует ли уже пара [Sender, Receiver] или [Receiver, Sender]. Если да, верните идентификатор беседы. Если нет, создайте его.
Я пробовал .in и .where, но они не работают все время. Есть идеи?
class Conversation
include Mongoid::Document
include Mongoid::Timestamps
has_and_belongs_to_many :participants, :class_name => 'User'
embeds_many :messages
end
def create
@conversation = Conversation.any_of({participant_ids: [current_user.id, params[:recipient_id]]},
{participant_ids: [params[:recipient_id], current_user.id]}).first
if @conversation.nil?
@conversation = Conversation.create(participant_ids: [current_user.id, params[:recipient_id]])
end
render json: { conversation_id: @conversation.id.to_s }
end
Так что это модель и метод у меня есть, что работает, но мне кажется, что там должна быть более простой способ сделать это.
Пожалуйста, включите образцы документов. Пожалуйста, также включите все, что вы пробовали, и что не работает. – wdberkeley
вы также можете использовать 'document # first_or_initialize' вместо проверки на' nil? ' –