gpt4 book ai didi

ruby-on-rails - 创建时从嵌入式文档访问父级(Mongoid)

转载 作者:数据小太阳 更新时间:2023-10-29 08:12:50 26 4
gpt4 key购买 nike

这个技巧适用于“has_many”关系,但对“embeds_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, 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

所以,它在一行 "field :full_name, type: String, default: ->{ "#{name}, #{country.name}"}"上失败了,因为那个时候国家是未定义的

最佳答案

您需要检查 country首先,然后它将返回 country.name

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

我无法让它与字符串插值一起工作,但附加工作(将 country.name 连接到 str)

关于ruby-on-rails - 创建时从嵌入式文档访问父级(Mongoid),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15840540/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com