【问题标题】:Search document in mongoid by Object_id通过 Object_id 在 mongoid 中搜索文档
【发布时间】:2014-07-10 14:53:01
【问题描述】:

我在 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

我是不是设计本身做错了什么?请提出建议。

【问题讨论】:

  • 请发布您的模型,以便我们了解用户、活动和参与者之间的关系。
  • 它应该类似于Participant.where(user_id: current_user_id)
  • @muistooshort 请提出解决方案

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


【解决方案1】:

使用

@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]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-12
    • 2012-01-18
    • 1970-01-01
    • 2011-12-14
    • 1970-01-01
    • 2013-03-28
    相关资源
    最近更新 更多