2

この問題に頭を悩ませているようには見えません。以下にメッセージモデルがあります

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句を使用できるようにすることを考えていましたが、おそらく解決策がありますこれには、私は考えていません。ラムダ付きのスコープ? 私は今立ち往生しています。

どんな助けでも大歓迎です

4

1 に答える 1