Как я могу установить user_type в таблице mailboxer_notifications? - PullRequest
0 голосов
/ 14 мая 2019

Моя проблема в том, что, когда пользователи отвечают друг другу, трудно исследовать базу данных с помощью 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"

Но это не работает, как говорится "неизвестный тип отправителя"метод».Я перечислил это таким образом, потому что, основываясь на коде самоцвета почтового ящика, сообщения об этом принадлежат, а модель сообщений связана со значением таблицы и столбца, которое я хочу изменить.

Это соответствующий код: https://github.com/mailboxer/mailboxer/blob/03543e8a06dea8c9bfb52963da8abbf1157d5d21/app/models/mailboxer/message.rb

Исходя из этого, что я должен изменить, чтобы иметь его, чтобы, когда я отвечаю пользователю, вызывается ответное действие, а затем диалоги "вызывают" сообщения, которые сами устанавливают значение sender_type в желаемое значение?

1 Ответ

1 голос
/ 15 мая 2019

В предложенном вами коде вы вызываете sender_type для массива сообщений, но этот метод существует в модели Mailboxer::Message.Поскольку это полиморфная ассоциация , см. Код модели здесь , sender из Mailboser::Message будет пользователем, который использовался для создания сообщения (в данном случае current_user).

Итак, я думаю, что вы ищете, чтобы получить user_type вашего отправителя для конкретного сообщения разговора.

Так что это можно сделать, выполнив следующее (в этом примередавайте получим user_type пользователя, отправившего первое сообщение данного разговора:

conversation.messages.first.sender.user_type
...