我正在编写一个 API,并且有两个模型将作为一篇文章的一部分创建,它们是Order
和LineItem
. 我的 API 需要(理想情况下)这种格式的数据:
{
"name": "Test Name",
"date": "2013/01/01",
"items": [{
"name": "Item One",
"quantity": 10
}, {
"name": "Item Two",
"quantity": 30
}]
}
在上面的示例中,“name”和“date”是我的Order
模型的属性,“items”数组中的每个条目都是一个LineItem
. 我的两个模型定义如下:
class Order < ActiveRecord::Base
has_many :line_items
end
class LineItem < ActiveRecord::Base
belongs_to :order
validates :name, :uniqueness => {:scope => :order_id }
end
因此,每个订单项对于订单必须是唯一的。当我收到此 POST 请求来构建我的项目时,似乎LineItems
在保存我的. 但是,如果我的 s 未能验证,那么我已经在我的系统中保存了一个我不想要的订单。Order
LineItem
处理这种情况的正确方法是什么?