この問題に頭を悩ませているようには見えません。以下にメッセージモデルがあります
Message
# content:string
# original_id:integer
# sender_id:integer
# receiver_id:integer
has_one :reply, class_name: "Message", foreign_key: "original_id"
belongs_to :original, class_name: "Message"
各メッセージには 1 つの返信のみを含めることができ、返信メッセージには対応する元のメッセージが含まれます。
私がやりたいことは、返信されたメッセージを 1 つのバッチに、未返信のメッセージを別のバッチにプルできるようにするスコープまたはクラス メソッドを作成することです。
何かのようなもの
# return messages that have a reply present
def self.replied
where(reply.present?)
end
# return messages that have no reply
def self.unreplied
where(reply.nil?)
end
メソッドを連鎖させて、最終的にメッセージを引き出すことができます
user1.messages.replied
DB列でない限りwhere句を使用できないため、現在は機能しません...だから、「返信された」ブール列をDBに追加して、where句を使用できるようにすることを考えていましたが、おそらく解決策がありますこれには、私は考えていません。ラムダ付きのスコープ? 私は今立ち往生しています。
どんな助けでも大歓迎です