我正在构建一个带有 Ember 前端的 Rails 应用程序。我正在努力确保 API 在 Rails/Ember 精神中尽可能简单、普通、RESTful 和传统。
我对如何处理父模型至少需要一个子模型而子模型都需要父模型的情况感到困惑。
这是一个有点做作的例子:
class Meal < ActiveRecord::Base
has_one :appetizer
has_one :entree
has_many :side_dishes
has_many :desserts
# ensures there is AT LEAST one appetizer, entree, side dish or dessert
validate :plate_is_not_empty
accepts_nested_attributes_for :appetizer, :entree, :side_dishes, :desserts
end
class Appetizer < ActiveRecord::Base
belongs_to :meal
validates_presence_of :meal
end
class Entree < ActiveRecord::Base
belongs_to :meal
validates_presence_of :meal
end
class SideDish < ActiveRecord::Base
belongs_to :meal
validates_presence_of :meal
end
class Dessert < ActiveRecord::Base
belongs_to :meal
validates_presence_of :meal
end
在过去(也就是在 Ember 之前,使用标准的 Rails 应用程序),我的路径总是通过父控制器创建父对象(在这种情况下应该是 MealsController),至少有一个嵌套的子对象。
snack = Meal.create(:name => 'Late night snack', :side_dishes_attributes => {:name => 'Corn Bread'})
然后我可以根据需要随意添加其他孩子,稍后,因为已经创建了父母。
Dessert.create(:name => "Marshmellow Fluff straight from the jar", :meal => snack)
但是使用 Ember 处理这种情况的最佳方法是什么?我假设这只是一个特殊情况,需要使用嵌套属性进行自定义 ajax 调用,这很好。但我想知道这样的情况如何适应 Ember 提倡的新兴 API 标准。(我是其中的忠实粉丝。)