ユーザー ('current_user') が他の 2 人のユーザー ('user1' と 'user2') 間の互換性を評価するアプリを作成しようとしています。互換性を肯定的または否定的に評価できます。2 人のユーザーを「互換性がある」と評価すると、同じクラスの 2 つのリソース (双方向性の場合は「positive_connection」と「inverse_positive_connection」) が作成され、それらを「互換性がない」と評価すると、2 つのリソース (「negative_connection」) も作成されます。 ' および 'inverse_negative_connection')。したがって、positive_connection、negative_connection、およびユーザーのモデルがあります。
各評価リソースは、それを作成したユーザーだけでなく、それによって接続されたユーザーにも属しています。肯定的な評価と否定的な評価の両方を持つことが重要です。
これは私の問題です: すべてのユーザー ( @user
) ページで、次の個別のリストを表示したい:
であるユーザー
overall_positively_connected_to(@user)
(すなわちpositive_connections.count > negative_ratings.count
)、およびであるユーザー
overall_negatively_connected_to(@user)
(つまりnegative_connections.count > positive_ratings.count
)。
私ができないように見えるのは、ネットレートが「互換性がある」または「互換性がない」ユーザーだけを引き出すクラスメソッドを書くことです
Michael Hartl の rails チュートリアル (私はまったくの初心者です) を読んで、User モデルに次のようなものを書く必要があると思います。
class User < ActiveRecord::Base
def self.that_are_compatible_with
User.overall_positively_connected_to(user)
end
.
.
.
編集
SQL クエリの知識がまったくない状態から始めて、@user に (それぞれ) 否定的および肯定的に接続されているユーザーを見つけるための次の 2 つのクラス メソッドを作成しました。
.
.
.
def self.with_neg_connections_to(user)
joins(:negative_connections).
where(:negative_connections => {:user_a_id => user})
end
def self.with_pos_connections_to(user)
joins(:positive_connections).
where(:positive_connections => {:user_a_id => user})
end
しかし、それはあまり役に立ちません。私が必要としているのは、 users を取得するメソッドですoverall_positively_connected_to(user)
。メソッドには2つの結合が含まれ、次のようになると思います。
def self.overall_positively_connected_to(user)
joins(:positive_connections).joins(:negative_connections).
where((:negative_connections => {:user_a_id => user}).count > (:positive_connections => {:user_a_id => user}).count)
end
しかし、ここで私は完全に行き詰まります。明らかに正しくありません。私はどこにもそのような他の例を見つけることができません...
SQLクエリに関しては手がかりがないので、これに関するどんな助けも素晴らしいでしょう。さらにコードが必要な場合はお知らせください。前もって感謝します!