我有两个模型:
class Customer < ActiveRecord::Base
has_many :contacts
end
class Contact < ActiveRecord::Base
belongs_to :customer
validates :customer, presence: true
end
然后,在我的控制器中,我希望能够在“一次”扫描中创建两者:
@customer = Customer.new
@customer.contacts.build
@customer.save
这失败了(不幸的是,翻译已打开,它转换为类似:联系人:客户不能为空白。)
@customer.errors.messages #=> :contacts=>["translation missing: en.activerecord.errors.models.customer.attributes.contacts.invalid"]}
在检查模型时,确实@customer.contacts.first.customer
是nil
。不知何故,这是有道理的,因为@customer
没有被保存,因此没有id
.
如何构建此类关联模型,然后保存/创建它们,以便:
- 如果模型无效,则不会保留任何模型,
- 错误可以在一个列表中读出,而不是结合所有模型的错误消息,
- 并保持我的代码简洁?