如何表明模型的每个实例都有一个或更多另一个模型的实例。
我总是看到如何使用has_many
- belongs_to
<指示一对多(模型的每个实例具有零或更多其他模型的实例) / p>
典型地
class Order < ActiveRecord::Base
has_many :line_items
class LineItem < ActiveRecord::Base
belongs_to :cart
但对于关系订单----&gt; 1 .. n LineItem ????
答案 0 :(得分:1)
您仍然会使用has_many
和belongs_to
。但是,您必须确保父项的实例在没有子项的任何实例的情况下不能存在,反之亦然。您可以通过多种方式完成此操作。从孩子那边:
或者来自父方:
还有一些场景,但这说明了这一点。这实际上取决于你如何建模对象。
答案 1 :(得分:1)
在LineItem上,添加validates_presence_of :cart_id
在购物车上,将inverse_of :cart
添加到has_many声明
官方Rails解决方案:http://guides.rubyonrails.org/active_record_validations.html#presence
答案 2 :(得分:0)
class Cart < ActiveRecord::Base
has_many :line_items
validates_presence_of :line_item_id
end
我认为这就是你想要的。购物车应该有1 ... n行项目。