2014-09-12 51 views
2

使用Mongoid(3.1.6) 我有以下字段集合:Mongoid發現或嵌入散列創建

field :project, type: String 
field :date_hierarchy, type: Hash, default: {year: 0, semester: 0, quarter: 0, month: 0, day: 0} 

我想找到項目的文檔:「1」,date_hierarchy:{年份:2013,學期:2,季度:4,月份:11,日期:12} 如果文檔未找到,我希望創建它 我該怎麼做? 我嘗試了這些非他們的工作

MyModel.where(:project=>"1", "date_hierarchy.year"=>2013, "date_hierarchy.semester"=>2, "date_hierarchy.quarter"=>4, "date_hierarchy.month"=>11, "date_hierarchy.day"=>25).first_or_create! 

MyModel.where(:project=>"1", "date_hierarchy.year"=>2013, "date_hierarchy.semester"=>2, "date_hierarchy.quarter"=>4, "date_hierarchy.month"=>11, "date_hierarchy.day"=>25).find_or_create_by("date_hierarchy.year"=>2013, "date_hierarchy.semester"=>2, "date_hierarchy.quarter"=>4, "date_hierarchy.month"=>11, "date_hierarchy.day"=>25). 

回答

2

你需要傳遞date_hierarchy值作爲哈希,因爲你會傳遞給new()create()

MyModel.find_or_create_by({ 
    project: '1', 
    date_hierarchy: {year: 2013, semester: 2, quarter: 4, month: 11, day: 25} 
})