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

时间:2014-08-14 01:21:06

标签: ruby-on-rails ruby mongoid

我正在使用Mongoid为我的Rails应用程序。目前我有这两个模型:

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

我的应用将使用REST API创建/删除/更新用户以及地址。

但是,当用户想要添加新地址或从现有用户帐户中删除新地址时。我需要逐个比较当前地址列表,看看它是新地址还是旧地址才能进行更新操作;这种方法非常繁琐。

另一个选择是为自己设置一组REST API。但是,我不想在地址模型中使用REST API,因为我可以预见会有很多基于需求的嵌入式文档。

只是想知道更新嵌入式文档的最佳选择是什么?

由于

2 个答案:

答案 0 :(得分:1)

您是否拥有单独的地址资源或将其添加到更新用户,请确保它与您的前端/ API消费者合作。

例如,如果您使用ember js(具体为ember-data),则 使用户更新中的地址操作 导致ember-数据不支持将嵌入资源作为前端独立模型(AFAIK)...

所以虽然我更喜欢将地址作为一个单独的资源,并将其视为未嵌入,您必须确保您选择的设计/解决方案能够在完整的堆栈中工作

答案 1 :(得分:0)

通常最好理解,如果您有繁琐的要求,有时需要繁琐的实施。话虽这么说,我会有一个地址端点,并将它们视为未嵌入,在用户上搜索它们(通过id或其他标识符),删除,更新或创建它们,如果它没有嵌入。