[解決済み] NOT NILを使ったRailsのWHEREコンディション
2022-03-24 20:36:41
質問
rails 3 スタイルを使用して、反対のことをどのように書けばよいのでしょうか。
Foo.includes(:bar).where(:bars=>{:id=>nil})
idがnilでない場所を探したい。 私は試してみました。
Foo.includes(:bar).where(:bars=>{:id=>!nil}).to_sql
でも、それが返ってくる。
=> "SELECT \"foos\".* FROM \"foos\" WHERE (\"bars\".\"id\" = 1)"
これは間違いなく私が必要としているものではなく、ほとんどARelのバグのように思えます。
解決方法は?
Rails 4+
ActiveRecord 4.0以降では、以下の機能が追加されます。
where.not
ということで、こんなことができます。
Foo.includes(:bar).where.not('bars.id' => nil)
Foo.includes(:bar).where.not(bars: { id: nil })
テーブル間のスコープを操作する場合、私は
merge
既存のスコープをより簡単に利用できるようにするためです。
Foo.includes(:bar).merge(Bar.where.not(id: nil))
また
includes
は常に結合ストラテジーを選択するわけではありません。
references
ここも同様に、そうでなければ、無効なSQLを生成してしまう可能性があります。
Foo.includes(:bar)
.references(:bar)
.merge(Bar.where.not(id: nil))
Rails 3
Rails 3で行う正規の方法です。
Foo.includes(:bar).where("bars.id IS NOT NULL")
関連
-
[解決済み] 新規ユーザー作成時に ActiveModel::ForbiddenAttributesError が発生する。
-
[解決済み] Ruby on rails アプリで ES6 (ES2015) を使用するにはどうすればよいですか?
-
[解決済み] Ruby on Railsのマイグレーションでデータベースのカラムの名前を変更するにはどうすればよいですか?
-
[解決済み] Rubyでnilとemptyとblankを理解する方法
-
[解決済み] Ruby on Railsで現在の絶対URLを取得するにはどうすればよいですか?
-
[解決済み] エラーが発生しました。pgsqlをrailsで動作させようとすると、Peer authentication failed for user "postgres" と表示されます。
-
[解決済み] Railsです。ActiveRecordでデフォルト値を設定するにはどうすればよいですか?
-
[解決済み] 実行時にメソッドが定義されている場所を見つけるには?
-
[解決済み】Railsの認証トークンを理解する
-
[解決済み】Ruby on 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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】なぜRuby on Railsは、http://localhost:3000 の代わりに http://0.0.0.0:3000 を使用するのですか?
-
[解決済み] Mac OS Xにhomebrewがインストールされているかどうかを確認する方法
-
[解決済み] ウェブパッカーがアプリケーションを見つけ出せない
-
[解決済み] heroku push rejected, failed to compile Ruby/rails app
-
[解決済み] 該当するルートがない [GET] "demo/hello"
-
[解決済み] DestroyとDeleteの違い
-
[解決済み] rails erb フォームヘルパー options_for_select :selected
-
[解決済み] nil:NilClass の未定義メソッド `each' - しかし、なぜ?
-
[解決済み] railsで':remote => true'はどのように動作するのでしょうか?
-
[解決済み] rails/rubyでgroup_byを使用する。