3

「プロファイル」モデルと、このモデルの2つのActiveRecord::Relationsがあります。最初の関係のSQL要求は非常に大きいです。2番目は

Profile.where(:id => 1)

最初に2番目の関係を追加したいと思います。したがって、結果として、2番目のリレーションには最初のprrofileが含まれます。

私がしようとしました

first.merge(second)

しかし、それは空の関係を返します。Railsのバージョンは3.2.2です。もちろん、結果も関係になるはずです。この関係に.limit()と.paginate()を追加する必要があります。

4

2 に答える 2

2

追加の.where句を既存のリレーションに追加すると、次のようになります。

relation = Thing.joins(:associated_things => [:users, :still_more_things]).where(:condition => true)
new_relation = relation.where(:id => 1)

これにより、新しい'where'がANDを使用して既存のものと結合されます。ActiveRecord :: Relationshipは、「wheres」とORの結合をサポートしていません。必要な場合は、Rails 3.1以降を使用している場合はSqueel(https://github.com/ernie/squeel)、またはmeta_where( https://github.com/ernie/meta_where)for3.0。

于 2012-04-05T16:44:01.303 に答える
0

マージは、最初のリレーションの同じキーの値を、マージされたリレーションの値で上書きします。

于 2012-05-11T20:39:48.843 に答える