ActiveRecord OR クエリ ハッシュ記法
2023-12-18 23:10:33
質問
への引数の指定には、主に3つの表記があることは知っています。
where
ActiveRecordのメソッドに引数を与えるための3つの主な表記法を知っています。
- 純粋な文字列
- 配列
- ハッシュ
指定方法
and
を指定します。
where
メソッドは簡単です。
# Pure String notation
Person.where("name = 'Neil' AND age = 27")
# Array notation
Person.where(["name = ? AND age = ?", 'Neil', 27])
# Hash notation
Person.where({name: "Neil", age: 27})
指定する
or
を指定すると、この同じ
where
メソッドは、ハッシュ構文で私をつまずかせる。それは可能ですか?
# Pure String notation
Person.where("name = 'Neil' OR age = 27")
# Array notation
Person.where(["name = ? OR age = ?", 'Neil', 27])
# Hash notation DOESN'T WORK
Person.where({name: "Neil" OR age: 27})
どのように解決するのですか?
ハッシュ記法」の実装として考えられる選択肢は5つあります(最後の2つはなんとなくハッシュ記法です)。 ish ):
-
Ruby on Rails 5では、次のような連鎖が可能です。
ActiveRecord::Relation#or
メソッドを使うことで、以下のような連鎖ができます。Person.where(name: 'Neil').or(Person.where(age: 27))
-
使用方法
where_values
と共にreduce
. はunscoped
メソッドが必要です Rails 4.1+のみ を確実にするためにdefault_scope
が含まれないようにwhere_values
. そうでなければ、両者の述語はdefault_scope
とwhere
は連鎖してor
演算子で連結されます。Person.where( Person.unscoped.where(name: ['Neil'], age: [27]).where_values.reduce(:or) )
-
これらの機能または類似の機能を実装するサードパーティプラグインをインストールする、など。
-
どこまたは (Ruby on Rails 5 のバックポートである
.or
機能) -
Person.where{(name == 'Neil') | (age == 27)}
-
Person.where(name: 'Neil').or(age: 27)
-
Person.where.anyof(name: 'Neil', age: 27)
-
Person.where( (SmartTuple.new(' or ') << {name: 'Neil', age: 27}).compile )
-
-
使用方法 アレル :
Person.where( Person.arel_table[:name].eq('Neil').or( Person.arel_table[:age].eq(27) ) )
-
名前付きパラメータを持つプリペアドステートメントを使用します。
Person.where('name = :name or age = :age', name: 'Neil', age: 27)
関連
-
[解決済み] railsアプリケーションでCookieのオーバーフロー?
-
[解決済み] Railsです。ActiveRecordでデフォルト値を設定するにはどうすればよいですか?
-
[解決済み] Rubyのクラス名を取得する方法を教えてください。
-
[解決済み] ActiveRecordオブジェクトを削除するにはどうしたらいいですか?
-
[解決済み】activerecordのレコードを複製する最も簡単な方法は何ですか?
-
[解決済み】RailsでActiveRecordモデルとそのテーブルの名前を変更するマイグレーションはどのように記述するのですか?
-
[解決済み】Rails: #update_attributeと#update_attributesの比較
-
[解決済み】ActiveRecord/RailsでNOT INクエリを表現する方法とは?
-
[解決済み] ActiveRecordのORクエリ
-
[解決済み] Rails 5: ActiveRecord OR クエリ
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Rails 4 RoutingError: ルートが一致しない[POST]。
-
[解決済み] nil:NilClass の未定義メソッド `each'... なぜでしょうか?
-
[解決済み] Herokuの問題 : あなたが探しているページは存在しません。
-
[解決済み] railsアプリケーションでCookieのオーバーフロー?
-
[解決済み] RVMでRubyのデフォルトバージョンを設定するには?
-
[解決済み] "render :nothing => true" は空のプレーンテキストファイルを返すのですか?
-
[解決済み] Railsコンソール:リロード!モデルファイルの変更が反映されない?考えられる理由は何でしょうか?
-
[解決済み] ActiveRecordのORクエリ
-
[解決済み] 2つのActiveRecord::Relationオブジェクトを結合する
-
[解決済み] Rails 5: ActiveRecord OR クエリ