У меня есть модель User:
class User
field :username, type: String
embeds_many :products
end
class Product
field :name, type: String
embedded_in :user
end
Я хотел бы иметь одну операцию, которая:
- вставить пользователя
- обновить пользователя, если пользователь уже существует (это я могу легко сделать с помощью upsert)
- продвигать продукты
Это работает для обновления:
User.new(username: 'Hello').upsert
Проблема в том, что при этом будут удалены встроенные продукты (атрибут products не указан).
Могу ли я попросить mongoid пропустить установку массива в пустой? Могу ли я попросить mongoid подтолкнуть новые продукты в конец массива продуктов? Что-то вроде этого:
User.new(username: 'Hello').push(products: [Product.new(name: 'Screen')]).upsert