我有一个情况(解析),我需要从子记录开始,添加它们的逻辑父项,然后在验证子项和父项的同时保存。如何防止在父项无效时保存ActiveRecord子对象?
有没有一个标准的方式来处理这与Rails?
考虑以下关系:
- 父
has_many
儿童,validates :child, presence: true
- 儿童
belongs_to
父
我看到类似以下内容:
p = Parent.new # with a missing required attribute
c = Child.new
c.parent = p # or c.parents << p, this isn't important
p.valid? # false
c.valid? # true
c.save # true
所以这让我拯救小孩d而新关联的父对象有错误。
有没有一种常规的方法来解决这个问题?我相信这在交换对象时可以正常工作,正如他们之间的关系所期望的那样。
但是,在这种情况下,我不能从父母开始,因为它可能已经存在,并且我为此单独做了find_or_create
。在这种情况下,从儿童记录开始更合乎逻辑。
Google/SO搜索没有帮助。