0

ユーザー、ドメイン、アソシエーションの 3 つのモデルがあります。私のユーザーモデルはdeviseから取り込まれています。私のドメイン モデルは、「ランニング、サイクリングなどの人々の興味」で構成されています。私の関連付けテーブルは、user_id を domain_id にリンクし、それをレコードとして保存します。ドメインを追加すると、ユーザー サインアップ フォームにドメインの情報が自動的に入力されます (ユーザーは、実行するのが好きなど、ドメインを選択できます)。

私のクエリは..現在ログオンしているユーザーと同様の興味を持つユーザーをプルするために使用できるアクティブなレコードクエリは何ですか? したがって、Tom というユーザーがログインし、ランニングとサイクリング (リンク先) のドメインの関心を選択した場合、同様のドメイン (関心) を持つ他のユーザーとデータベース オブジェクトを引き戻すにはどうすればよいでしょうか。

基本的に、Tom、Paul、Steph がユーザーで、Tom と Paul が同じドメインを選択し、Steph が異なるドメインを選択した場合、これを行うためのクエリ コードは何でしょうか? これで十分な情報であることを願っています。

4

1 に答える 1

1

次のようなことができると思います:

User.joins(:domains).where("domains.id IN (?)", current_user.domains.pluck(:domain_id)) 

current_user.domains.pluck(:domain_id)current_user が選択したすべてのドメイン ID を収集します。Pluck は Rails 3.2 のみにあり、以前のバージョンを使用している場合は、代わりに collect を使用する必要があります。

次に、クエリの最初の部分で、そのドメインを関心の 1 つとして持っているユーザーを選択します。

Bongs が http://guides.rubyonrails.org/association_basics.htmlを示唆しているように、Rails ガイドを参照する必要があります。

于 2012-06-14T10:12:28.660 に答える