【发布时间】:2014-05-27 01:35:31
【问题描述】:
我正在使用 Rails 多态关联,这样一些模型有很多 cash_histories 子节点,如下所示:
has_many :cash_histories, as: :cashable
但是当我尝试删除父 @resource 的所有现金历史记录时,如下所示:
@resource.cash_histories.delete_all
我收到以下查询:
UPDATE "cash_histories" SET "cashable_id" = NULL WHERE "cash_histories"."cashable_id" = $1 AND "cash_histories"."cashable_type" = $2 [["cashable_id", 1], ["cashable_type", "ServiceOrder"]]
我无法理解这种行为,将关系 id 设置为 null 而不是删除,这将导致我的表中出现死行。为什么会这样?
我使用的是 Rails 4.1。
【问题讨论】:
-
在尝试理解这种行为时,请记住您将 delete_all 方法发送到 关联,而不是直接发送到模型。
标签: ruby-on-rails activerecord rails-activerecord ruby-on-rails-4.1