根据the has_many documentation,“铲”方法collection<<(object, …)
通过将一个或多个对象的外键设置为集合的主键,将其添加到集合中。 请注意,除非父对象是新记录,否则此操作将立即触发更新SQL,而无需等待对父对象的保存或更新调用。
如果要构造新记录而不将其保存到数据库中,请使用collection.build
。
返回一个集合类型的一个或多个新对象,这些对象已使用属性实例化并通过外键链接到该对象,但尚未保存。
使用Club和Member作为示例模型:
club = Club.find(params[:id])
club.members.build(member_attributes) # member is not saved
club.save # saves club and members
但如果...
我想使用<<
创建关联,并且完全不触发SQL。在父对象是新记录的情况下,如何覆盖<<
以使其表现得像方案?