我在验证子级存在但父级不存在的 has_many 关系时遇到问题。但是,在创建/保存父对象时,我想确保已经保存了特定的子对象(具有某些属性)。
有一个Parent对象,has_many Child对象。对象首先Child被持久化到数据库中,因此没有对父对象的任何引用。关联结构为:
Parent
- has_many :children
Child
- someProperty: string
- belongs_to: parent
例如,有三个子对象:
#1 {someProperty: "bookmark", parent: nil}
#2 {someProperty: "history", parent: nil }
#2 {someProperty: "window", parent: nil }
仅当父对象包含具有 somePropertyhistory和的子对象时,父对象才有效window。
我将控制器内的父级设置为:
p = Parent.new(params[:data])
for type in %w[bookmark_id history_id window_id]
if !params[type].blank?
p.children << Child.find(params[type])
end
end
// save the parent object p now
p.save!
当孩子被分配给父母时<<,他们不会立即保存,因为父母的id不存在。而要得救的父母,它必须至少有这两个孩子。我该如何解决这个问题?欢迎任何意见。