Ruby on rails 创建时从嵌入文档访问父级(Mongoid)
此技巧适用于“has\u many”关系,但不适用于“embedded\u many”。有什么想法吗Ruby on rails 创建时从嵌入文档访问父级(Mongoid),ruby-on-rails,ruby,activerecord,mongoid,Ruby On Rails,Ruby,Activerecord,Mongoid,此技巧适用于“has\u many”关系,但不适用于“embedded\u many”。有什么想法吗 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,
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
国家级
include Mongoid::Document
字段:名称,类型:字符串
嵌入许多:城市
结束
阶级城市
include Mongoid::Document
字段:名称,类型:字符串
字段:全名,类型:字符串,默认值:->{“{name},{country.name}”
嵌入在:国家
结束
1.9.3p392:025>c=国家。查找或创建(名称:“foo”)
=> #
1.9.3p392:026>c.城市。查找或创建(名称:“酒吧”)
NoMethodError:nil:NilClass的未定义方法“city”
因此,它在一行“field:full_name,type:String,default:->{“{name},{country.name}”上失败,因为此时未定义country您需要先检查
country
,然后返回country.name
field:full_name,type:String,default:->{“#{name}”,错误消息“nil:NilClass的未定义方法'city'与您对默认值的解释不符。如果删除默认值,它是否通过?是它的通过。nil:NilClass的未定义方法'city'表示国家为零