[解決済み】Railsで関連するレコードがないレコードを探したい
2022-04-12 09:49:13
質問
簡単なアソシエーションを考えてみよう...
class Person
has_many :friends
end
class Friend
belongs_to :person
end
ARelやmeta_whereに友達がいない人をすべて取得する一番きれいな方法は何ですか?
そして、has_many :through 版はどうでしょう。
class Person
has_many :contacts
has_many :friends, :through => :contacts, :uniq => true
end
class Friend
has_many :contacts
has_many :people, :through => :contacts, :uniq => true
end
class Contact
belongs_to :friend
belongs_to :person
end
counter_cache は使いたくないし、読んだ限りでは has_many では使えないようです :through
Rubyでperson.friendsのレコードをすべて取得してループさせるのではなく、meta_search gemで使用できるクエリ/スコープが欲しいです。
クエリのパフォーマンスコストは気にしない
そして、実際のSQLから遠ければ遠いほど良い...。
解決するには?
これはまだSQLにかなり近いですが、最初のケースで友達がいない全員を獲得できるはずです。
Person.where('id NOT IN (SELECT DISTINCT(person_id) FROM friends)')
関連
-
[解決済み] サーバーに接続できませんでした。そのようなファイルまたはディレクトリがありません (PG::ConnectionBad)
-
[解決済み】コントローラでJSONをレンダリングする
-
[解決済み】ActionController::InvalidAuthenticityTokenについて
-
[解決済み] AWS S3です。アクセスしようとしているバケットは、指定されたエンドポイントを使用してアドレスされている必要があります。
-
[解決済み] "render :nothing => true" は空のプレーンテキストファイルを返すのですか?
-
[解決済み] Ruby on Railsのマイグレーションでデータベースのカラムの名前を変更するにはどうすればよいですか?
-
[解決済み] Ruby on Railsで現在の絶対URLを取得するにはどうすればよいですか?
-
[解決済み] エラーが発生しました。pgsqlをrailsで動作させようとすると、Peer authentication failed for user "postgres" と表示されます。
-
[解決済み] NOT NILを使ったRailsのWHEREコンディション
-
[解決済み】Railsの認証トークンを理解する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] サーバーに接続できませんでした。そのようなファイルまたはディレクトリがありません (PG::ConnectionBad)
-
[解決済み】コントローラでJSONをレンダリングする
-
[解決済み】Rails 4 RoutingError: ルートが一致しない[POST]。
-
[解決済み】bcrypt LoadError: Cannot load such file
-
[解決済み】コレクションをDESCで並べる方法
-
[解決済み] どのようにrailsでラジオボタンを正しく使用するには?
-
[解決済み] Ruby on Railsのランナー
-
[解決済み] Rubyで変数をインクリメントする [重複]。
-
[解決済み] Ruby on rails "No route matches" (ルートに一致するものがない)。
-
[解決済み] "render :nothing => true" は空のプレーンテキストファイルを返すのですか?