Ruby on rails 更新Rails中的孤立记录

Ruby on rails 更新Rails中的孤立记录,ruby-on-rails,ruby-on-rails-3,activerecord,Ruby On Rails,Ruby On Rails 3,Activerecord,我有一个类型,有很多衣服。在Dress表中,我有一个名为type\u id的列,它引用了type模型。我想做的是,每当删除Type对象时,所有关联的Dress对象都会将其Type\u id更新为nil 到目前为止,我在控制台中尝试了这一点,并且效果良好: > Dress.where(type_id: 3).update_all(type_id: nil) 但是,当我在TypesController中翻译它时,如下所示: def destroy type_id = params[:id

我有一个
类型,有很多衣服。在
Dress
表中,我有一个名为
type\u id
的列,它引用了
type
模型。我想做的是,每当删除
Type
对象时,所有关联的
Dress
对象都会将其
Type\u id
更新为
nil

到目前为止,我在控制台中尝试了这一点,并且效果良好:

> 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
…然后在浏览器中尝试,将删除
类型
对象,但未更新
衣服
类型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\u id=0
,但在此之前它在
DELETE
命令中设置正确。

类类型class Type < ActiveRecord::Base
    has_many :dresses, :dependent => :nullify
    ...
end
有很多:衣服,:相依=>:无效 ... 结束

它不管用吗?

是的,它管用。第一次浏览Rails指南时,我没有注意到nullify选项。