1. ホーム
  2. ruby-on-rails

[解決済み] 2つのActiveRecord::Relationオブジェクトを結合する

2022-04-13 23:39:58

質問

次の2つのオブジェクトがあるとする。

first_name_relation = User.where(:first_name => 'Tobias') # ActiveRecord::Relation
last_name_relation  = User.where(:last_name  => 'Fünke') # ActiveRecord::Relation

2つのリレーションを組み合わせて、1つのリレーションを生成することは可能ですか? ActiveRecord::Relation オブジェクトは、両方の条件を含んでいますか?

注:この動作を得るためにwhereを連結できることは承知していますが、本当に興味があるのは、2つの別々の ActiveRecord::Relation オブジェクトを作成します。

解決方法は?

を使って結合する場合 AND (交差点) を使用します。 merge :

first_name_relation.merge(last_name_relation)

を組み合わせて使用したい場合は OR (ユニオン)を使用します。 or :

first_name_relation.or(last_name_relation)


ActiveRecord 5+のみ。4.2の場合は、インストール時に どこが のバックポートです。