我在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
我是否因设计本身而做错了什么?请建议。
答案 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]
)