Ruby on rails 如何实施';搜索功能';适用于邮箱';轨道上的宝石
现在我正在使用一个名为“mailboxer”的gem作为消息传递系统。 我想实现“关键字搜索功能”,我应该能够搜索对话和邮件的我的邮箱,无论是从收件箱,sentbox,垃圾箱或草稿 然而,这个gem给出了一个函数 搜索信息(查询) ,但它似乎不起作用。这里有一个方法来检索主题、正文或收件人/发件人的用户名包含给定字符串的所有对话。您可以稍微调整它以适应您的场景,或者在他们的github回购协议上打开一个问题Ruby on rails 如何实施';搜索功能';适用于邮箱';轨道上的宝石,ruby-on-rails,mailboxer,Ruby On Rails,Mailboxer,现在我正在使用一个名为“mailboxer”的gem作为消息传递系统。 我想实现“关键字搜索功能”,我应该能够搜索对话和邮件的我的邮箱,无论是从收件箱,sentbox,垃圾箱或草稿 然而,这个gem给出了一个函数 搜索信息(查询) ,但它似乎不起作用。这里有一个方法来检索主题、正文或收件人/发件人的用户名包含给定字符串的所有对话。您可以稍微调整它以适应您的场景,或者在他们的github回购协议上打开一个问题 def conversations_for(query) wildcarded_qu
def conversations_for(query)
wildcarded_query = "%#{query}%"
user_ids = User.where('CONCAT(first_name, " ", last_name) LIKE :query', query: wildcarded_query).pluck(:id)
current_user.mailbox.conversations.
joins(:messages).
references('mailboxer_conversations, mailboxer_notifications, mailboxer_receipts, messages_mailboxer_conversations, mr, mn'). # To get rid of warnings
select('mailboxer_conversations.*, mailbox_type, trashed').
where("mailboxer_notifications.subject LIKE :query
OR mailboxer_notifications.body LIKE :query
OR mailboxer_notifications.sender_id IN (:user_ids)
OR EXISTS ( SELECT * FROM mailboxer_receipts mr
INNER JOIN mailboxer_notifications mn ON mn.id = mr.notification_id
WHERE mn.conversation_id = mailboxer_conversations.id
AND mr.notification_id IN ( SELECT id FROM mailboxer_notifications
WHERE sender_id = :current_user_id )
AND mr.receiver_id IN (:user_ids))",
query: wildcarded_query, user_ids: user_ids, current_user_id: current_user.id)
end
你说它不起作用是什么意思?怎么了?你是如何使用它的?你的确切问题是什么?hi@vijoc实际上,当我使用该函数时,比如我得到了未定义方法“search”的错误,前当前用户。search_messages('test mail'),这里是“test mail”,我作为该函数的查询传递。