0

我正在使用 Mongoid 并且有一个项目和一个用户模型。在项目模型中,我有一个字段

class Project
  include Mongoid::Document
  field :name
  field :user_ids, :type => Array
end

class User
  include Mongoid::Document
  field :email
end

我可以找到属于一个项目的所有用户,即“找到这个项目的用户”

@project  = Project.first # => 'Housework'
User.criteria.id(@project.user_ids) # => ['Bart','Lisa','Maggie']

但是我很难找到属于一个用户的所有项目,即“找到这个用户的项目”

@user = User.first   # => 'Bart'
Project.where(:user_ids => @user.id) # doesn't work
Project.where(:user_ids.includes => @user.id) # not such method
Project.where(:user_ids => [@user.id]) # doesn't make sense to compare arrays, but tried anyway and doesn't work

我知道你可以在 User 模型中有另一个字段来存储 project_ids,我很乐意这样做,但我只是好奇,有没有一种方法可以在查找条件中使用,其工作方式类似于 #includes?在红宝石中?

4

1 回答 1

0

我找到了解决方案。它是 all_in finder 方法

例子:

Fruit.all[0].colors = ['red','green','blue'] #=> apple
Fruit.all[1].colors = ['yellow','green']     #=> banana

Fruit.all[2].colors = ['red', 'yellow']      #=> pineapple

要查找在其“颜色”数组字段中具有红色的所有水果,可以查询:

Fruit.all_in(:colors => ['red'])

=>[苹果,菠萝]

于 2010-08-28T19:42:26.117 回答