我的问题是,当用户彼此回复时,很难通过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代码,消息属于居者对话,并且消息模型链接到我要更改的表和列值。
基于此,我应该对其进行哪些修改,以便在回复用户时调用回复动作,然后对话“调用”消息,消息本身将sender_type设置为所需的值?
答案 0 :(得分:1)
在您提议的代码中,您正在消息数组上调用sender_type
,但是该方法存在于Mailboxer::Message
模型上。由于它是多态关联see code of model here,所以sender
的{{1}}将是用于创建消息的用户(在本例中为Mailboser::Message
)。
所以我想您正在寻找的是让您的发件人current_user
获得特定的对话消息。
因此,可以通过执行以下操作来完成此操作(在本示例中,让我们获取发送给定对话的第一条消息的用户的user_type
:
user_type