如何在 mailboxer_notifications table 中设置 user_type?

How can I set the user_type in the mailboxer_notifications table?

我的问题是,当用户相互回复时,很难通过 SQL 检查数据库并区分用户类型(例如管理员和个人用户)。默认值只是 "User",作为一个字符串。

在检查邮箱程序代码时,我知道它调用了 Conversations 控制器中的 "reply" 方法。这是代码的相关部分:

def reply
  current_user.reply_to_conversation(conversation, message_params[:body])
  flash[:notice] = "Message was sent."
  redirect_to conversation_path(conversation)
end

据此,我想做类似的事情:

conversation.messages.sender_type = params[:custom].present? ? params[:custom] : "Admin"

但这行不通,正如它所说 "unknown sender type method"。我这样列出它是因为,基于邮件拳击手 gem 代码,消息 belongs_to 对话,消息模型链接到 table 和我想要更改的列值。

这是相关代码: https://github.com/mailboxer/mailboxer/blob/03543e8a06dea8c9bfb52963da8abbf1157d5d21/app/models/mailboxer/message.rb

基于此,我应该修改什么才能拥有它,以便当我回复用户时调用回复操作,然后对话 "calls" 消息本身将 sender_type 设置为我想要的值?

在您提出的代码中,您正在对消息数组调用 sender_type,但该方法存在于 Mailboxer::Message 模型中。由于它是多态关联 see code of model hereMailboser::Messagesender 将是用于创建消息的用户(在本例中为 current_user)。

所以我猜你在找什么,是获取发件人的 user_type 以获取对话的特定消息。

所以这可以通过执行以下操作来完成(在此示例中,让我们获取发送给定对话的第一条消息的用户的 user_type

conversation.messages.first.sender.user_type