これを行うにはいくつかの方法が考えられますが、何を選択すればよいかわかりません。
私はクラスを持っており、Topic
これをスコープして、関連付けられたオブジェクトがある場合、Reply
またはtopic.replies
カウントが0より大きい場合にのみトピックを返すようにしています。
これを行うための最悪の方法:
@topics.select{ | topic | topic.replies > 0 && topic.title == "Conversation" }
where
理想的には、スコープを使用したいと思います。
scope = current_user.topics
scope = scope.joins 'left outer join users on topics.registration_id = registration_members.registration_id'
# scope = .. here I want to exclude any of these topics that have both the title "Conversations" and replies that are not greater than 0
これらの選択を、すでに選択されている他のものに「追加」する必要があります。したがって、私の選択では、他のすべてをこの選択だけに除外するべきではありません。Topic
返信が1つ未満で、「会話」とも呼ばれるものは、最終的な返品から除外する必要があると言っているだけです。
何か案は?
アップデート
半ハッシュのアイデアのようなもの:
items_table = Arel::Table.new(scope)
unstarted_conversations = scope.select{|a| a.title == "Conversation" && a.replies.count > 0}.map(&:id)
scope.where(items_table[:id].not_in unstarted_conversations)