Ruby on rails RubyonRails:更新嵌入式文档的最佳方法是什么?

Ruby on rails RubyonRails:更新嵌入式文档的最佳方法是什么?,ruby-on-rails,ruby,mongoid,Ruby On Rails,Ruby,Mongoid,我正在为我的Rails应用程序使用Mongoid。目前我有以下两种型号: class User include Mongoid::Document field :name, type: String embeds_many :addresses end class Address include Mongoid::Document field :street, type: String embedded_in :user end 我的应用程序将使用RESTAP

我正在为我的Rails应用程序使用Mongoid。目前我有以下两种型号:

class User
  include Mongoid::Document

  field :name, type: String

  embeds_many :addresses
end

class Address
  include Mongoid::Document

  field :street, type: String

  embedded_in :user
end
我的应用程序将使用RESTAPI创建/删除/更新用户以及地址

但是,当用户希望添加新地址或从现有用户帐户中删除新地址时。我需要逐个比较当前地址列表,看看它是新地址还是旧地址,以便执行更新操作;这种方法很乏味

另一种选择是拥有一套RESTAPI来解决它自身的问题。然而,我不想在地址模型中使用RESTAPI,因为我可以预见会有很多基于需求的嵌入式文档

只是想知道一般来说,更新嵌入式文档的最佳选择是什么


谢谢

通常最好理解,如果您有繁琐的需求,有时需要繁琐的实现。也就是说,我会为地址设置一个端点,并将地址视为未嵌入,在用户上搜索地址(通过id或其他标识符),删除、更新或创建地址,就像未嵌入地址一样。

您是否会为地址设置单独的资源或将其添加到更新用户,确保它能与前端/api消费者一起使用

例如,如果您正在使用(特别是)您have在用户更新中进行地址操作,因为余烬数据不支持在前端(AFAIK)将嵌入式资源作为单独的独立模型

因此,尽管我更喜欢将地址作为单独的资源,并将其视为未嵌入的资源,但您必须确保您选择的任何设计/解决方案都能在整个堆栈中工作。