通过Object_id在mongoid中搜索文档

时间:2014-07-10 14:53:01

标签: ruby-on-rails ruby-on-rails-4 mongoid mongoid3

我在mongodb有一个集合来存储参与者。数据如下:

    { 
     "_id" : ObjectId("53badeee6d6179191f030000"), 

    "user_id" : ObjectId("53b619a16d6179141e000000"),

    "campaign_id" : ObjectId("53b82c246d617912a9040000") 
    }

现在如何从rails中搜索它?

@participant=Participant.find(user_id:current_user_id, campaign_id:params[:id])

- 这不起作用。我应该始终创建像:ObjectId("53b82c246d617912a9040000")

这样的对象

参与者模型:

class Participant
  include Mongoid::Document
  field :detail, type: String
  field :date, type: Date
  belongs_to(:user)
  belongs_to(:campaign)

  validates_uniqueness_of :user, :scope => [:campaign]
end

我是否因设计本身而做错了什么?请建议。

1 个答案:

答案 0 :(得分:0)

使用

@participant = Participant.where(
  user_id: current_user_id,
  campaign_id: params[:id]
).first

@participant = Participant.where(
  user_id: current_user.id, # as i suspect you are using devise current user
  campaign_id: params[:id]
).first

它应该有效。还要确保params[:id]包含现有的campaign_id并且您没有使用错误的参数进行搜索(例如params[:campaign]