Есть три модели в проектерельсов запрос соединения, заказ, группы по вопросу
- разговора
- conversation_message
- сообщения
Conversation.rb
class Conversation < ActiveRecord::Base
#subject
has_many :conversation_messages, :dependent => :destroy
has_many :messages, :through => :conversation_messages, :dependent => :destroy, :order => "created_at DESC"
end
ConversationMessage.rb
class ConversationMessage < ActiveRecord::Base
#conversation_id, message_id
belongs_to :conversation
belongs_to :message, :dependent => :destroy
end
Message.rb
#sender_id, receiver_id, message
has_one :conversation_message, :dependent => :destroy
has_one :real_conversation, :through => :conversation_message, :source => "conversation"
Так что я хочу, чтобы получить current_user
«ы все разговоры и хотят, чтобы показать их в порядке последнего сообщения, принятого или отправленного. Также хотите показать одиночный разговор для всех своих сообщений, и разговор должен быть заказан сообщениями, включенными в него. Использование рельсов 3.0
Я попробовал следующий запрос, но дает мне ошибку ниже запроса
@user_conversations = Conversation
.joins(:messages)
.where(["messages.receiver_id = ? or messages.sender_id = ?", current_user.id, current_user.id ])
.group("conversations.id").order("messages.created_at DESC")
ошибка
PG::GroupingError: ERROR: column "messages.created_at" must appear in the GROUP BY clause or be used in an aggregate function
Я хочу показать отдельный разговор для всех связанных с ним сообщений, а список разговоров должен быть упорядочен сообщениями в разговоре. – chaitanya