0

mysql で rails 3.1.11 を使用しています。User(name, role, city) と Project(name) モデルを考えてみましょう。「Pune」から「admin」ロール、または「Mumbai」から「manager」ロールを持つユーザーを収集したいと考えています。

User
has_and_belongs_to_many :projects, uniq: true

Project
has_and_belongs_to_many :users, uniq: true

使用するクエリは

users = []
users <<  User.where(role: 'admin', location: 'Pune') 
users <<  User.where(role: 'manager', location: 'Mumbai')
Project.first.users << users

2つのクエリを起動します。上記のデータを 1 回の呼び出しで収集するにはどうすればよいですか? Mongoid には、同様のクエリ用のany_ofがあります。http://two.mongoid.org/docs/querying/criteria.html#any_of . すべてのユーザーを収集してからフィルター処理することは好みません。

4

2 に答える 2

0

squeel gem を使用すると、これをより良くすることができます。

User.where{(role = 'admin') & (location = 'Pune') | (role = 'manager') & (location = 'Mumbai')}

中括弧は、& と | も提供する squeel の使用を示しています。AND および OR の演算子。これは読みやすく、維持しやすいと思います。

于 2013-10-29T13:32:58.597 に答える