Этот трюк работает с отношением «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, Тип: String, по умолчанию: -> { "# {имя}, {# country.name}"}" becouse страна не определена на тот момент
Сообщение об ошибке «undefined method« city »для nil: NilClass» не соответствует вашему объяснению по умолчанию. Если вы удалите значение по умолчанию, оно пройдет? –
да его пропуск. undefined метод 'city 'для nil: NilClass означает, что страна равна нулю –