ruby on rails - How to enforce unique embedded document in mongoid -
i have following model
class person    include mongoid::document   embeds_many :tasks end  class task   include mongoid::document   embedded_in :commit, :inverse_of => :tasks   field :name end how can ensure following?
person.tasks.create :name => "create facebook killer" person.tasks.create :name => "create facebook killer"  person.tasks.count == 1  different_person.tasks.create :name => "create facebook killer" person.tasks.count == 1 different_person.tasks.count == 1 i.e. task names unique within particular person
having checked out docs on indexes thought following might work:
class person    include mongoid::document   embeds_many :tasks    index [       ["tasks.name", mongo::ascending],        ["_id", mongo::ascending]   ], :unique => true end but
person.tasks.create :name => "create facebook killer" person.tasks.create :name => "create facebook killer" still produces duplicate.
the index config shown above in person translate mongodb
db.things.ensureindex({firstname : 1, 'tasks.name' : 1}, {unique : true}) 
indexes not unique default. if @ mongo docs on this, uniqueness flag.
i don't know exact mongoid translation, you're looking this:
db.things.ensureindex({firstname : 1}, {unique : true, dropdups : true})
Comments
Post a Comment