如何在mailboxer_notifications表中设置user_type?

时间:2019-05-14 10:15:05

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4 mailboxer

我的问题是,当用户彼此回复时,很难通过SQL检查数据库并区分用户类型(因此,管理员和单个用户)。默认值为“用户”,为字符串。

当检查邮箱代码时,我知道它在“对话”控制器中调用了“答复”方法。这是代码的相关部分:

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"

但这不起作用,因为它表示“未知的发件人类型方法”。我之所以这样列出,是因为,基于邮件拳击手的gem代码,消息属于居者对话,并且消息模型链接到我要更改的表和列值。

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

基于此,我应该对其进行哪些修改,以便在回复用户时调用回复动作,然后对话“调用”消息,消息本身将sender_type设置为所需的值?

1 个答案:

答案 0 :(得分:1)

在您提议的代码中,您正在消息数组上调用sender_type,但是该方法存在于Mailboxer::Message模型上。由于它是多态关联see code of model here,所以sender的{​​{1}}将是用于创建消息的用户(在本例中为Mailboser::Message)。

所以我想您正在寻找的是让您的发件人current_user获得特定的对话消息。

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

user_type