我的理解是模型中子对象的构建/创建方法会自动创建关系。
但是,当我validates
在父对象和子对象上都使用 a 时,我无法保存父对象,除非我在子构建/创建方法中显式传入父对象
家长班
class Order < ActiveRecord::Base
attr_accessible :tax, :total
has_many :order_lines
validates :user, presence: true
validates :order_lines , presence: true
end
儿童班
class OrderLine < ActiveRecord::Base
attr_accessible :order, :product, :qty
belongs_to :order
belongs_to :product
...
...
validates :order, presence: true
end
问题
因此,如果我尝试:
order.order_lines.build(product: product)
order.save => #error for order_lines, order can't be blank
#or
order.order_lines.create(product: product) => # throws same error
但我可以成功地做到以下几点:
order.order_lines.build(product: product, order: order)
order.save => #true
#or
order.order_lines.create(product: product, order: order) => #true
这给我带来了 FactoryGirl 和创建测试的更多问题。
我是否错误和误解了您必须明确传递父对象?
导轨与:3.2.11