我在验证子级存在但父级不存在的 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不存在。而要得救的父母,它必须至少有这两个孩子。我该如何解决这个问题?欢迎任何意见。