根据哪些已被删除而不是未删除,找出一种为用户消息线程显示消息的方法时遇到了一些麻烦。删除消息时,已删除消息“sender_status 或接收者状态”将从 0 更改为 1。目前要在收件箱中显示用户消息线程列表,我使用:
例如
current_user = User.find(2)
current_user.message_threads
这会抓取所有具有 0 个发件人或收件人状态的 message_threads。
class User < ActiveRecord::Base
has_many :messages
has_many :message_threads
很好很容易,但我现在想做的是如何设置一些东西,使我能够从当前线程中获取具有 0 个发件人或收件人状态的消息。所以如果我要输入:
one_thread = current_user.message_threads.first
从这个线程中,我希望能够轻松获取我需要的唯一消息。想在 message_thread 模型中添加一些内容,以便我最终可以输入:
current_user.message_threads.first.messages
#or
one_thread.messages
并且只加载我需要的消息,而忽略状态为“1”的消息。
用户模型:
class User < ActiveRecord::Base
has_many :messages
has_many :message_threads
def message_threads
MessageThread.where([ '(sender_id = ? AND sender_status = 0) OR (recipient_id = ? AND recipient_status = 0)', self.id, self.id ])
end
def messages
Message.where([ '(sender_id = ? AND sender_status = 0) OR (recipient_id = ? AND recipient_status = 0)', self.id, self.id ])
end
消息线程模型:
class MessageThread < ActiveRecord::Base
has_many :messages
消息模型:
class Message < ActiveRecord::Base
acts_as_tree
has_one :message_thread
我尝试使用连接进行试验,但这对我来说效果不佳。
def messages
joins(:messages).merge( Message.where([ '(parent_id = ? AND sender_status = 0) OR (parent_id = ? AND recipient_status = 0)',self.message_id, self.message_id ]) )
end
帮助将不胜感激。
亲切的问候