0
我有一个Type has_many Dresses
。在Dress
表中,我有一个名为type_id
的列,其中引用了Type
模型。我想要做的是每当一个Type
对象被删除时,所有关联的Dress
对象都会将其type_id
更新为nil
。更新Rails中的孤立记录
到目前为止,我在控制台尝试这样做,它的工作原理:
> Dress.where(type_id: 3).update_all(type_id: nil)
然而,当我在TypesController
这样翻译的:
def destroy
type_id = params[:id]
if Type.find(type_id).destroy
Dress.where(:type_id => type_id).update_all(:type_id => nil)
redirect_to admins_path
end
end
...并尝试在浏览器,Type
对象被删除,但未更新Dress
type_id
。
这是日志输出:
DELETE FROM "types" WHERE "types"."id" = $1 [["id", 3]]
UPDATE "types" SET position = (position - 1) WHERE (1 = 1 AND position > 2)
COMMIT
UPDATE "dresses" SET "type_id" = NULL WHERE "dresses"."id"
IN (SELECT "dresses"."id" FROM "dresses" WHERE "dresses"."type_id" = 0)
我不明白为什么它设置在最后UPDATE
命令type_id = 0
但在此之前,它是在DELETE
命令正确设置。
是的,这个工程。我第一次浏览Rails指南时没有注意到无效选项。 –