2013-04-05 71 views
3

这招作品有“的has_many”的关系,但失败“embeds_many”。有任何想法吗?上创建访问父从嵌入文档(Mongoid)

class Country 
    include Mongoid::Document 

    field :name, type: String 
    embeds_many :cities 
end 

class City 
    include Mongoid::Document 

    field :name, type: String 
    field :full_name, type: String, default: ->{ "#{name}, #{country.name}" } 
    embedded_in :country 
end 


1.9.3p392 :025 > c = Country.find_or_create_by(name: 'foo') 
=> #<Country _id: foo, name: "foo"> 

1.9.3p392 :026 > c.cities.find_or_create_by(name: 'bar') 
NoMethodError: undefined method `city' for nil:NilClass 

因此,它无法上线 “字段:FULL_NAME,类型:字符串,默认: - > { ”#(名称),#{country.name}“” becouse国家未定义的那一刻

+1

错误消息“未定义的方法'城市”的零:NilClass”不符合您的默认的解释。如果您删除默认设置,它会通过吗? – 2013-04-05 19:51:16

+0

是其通。未定义的方法'城市”的零:NilClass意味着国家是零 – 2013-04-07 16:00:36

回答

0

您需要检查country第一,那么它将返回country.name

field :full_name, type: String, default: ->{ "#{name}, " << country.name if country }

我不能让这个用绳子插工作,但附加的作品(其中串接country.name到STR)