我在 Rails 5 。
我有这样的多态关联:
模型/ enjoy_level.rb :
class EnjoyLevel < ApplicationRecord
belongs_to :enjoyable, polymorphic: true, touch: true, optional: true
end
模型/ mother.rb :
class Mother < ApplicationRecord
has_one :enjoy_level, as: :enjoyable, dependent: :destroy
accepts_nested_attributes_for :enjoy_level
end
如果我销毁一个mother
(具有touch: true
选项),它仍然是:
enjoy_level
; Mother
update_at
设置为now(); Mother
记录。第一步和第二步无用,对吧?
我哪里错了?
答案 0 :(得分:0)
来自http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html
:touch - 如果为true,将触摸相关对象( 保存此记录时,updated_at / on属性设置为now 或被摧毁。如果指定符号,则将更新该属性 除了属性上的updated_at /之外还有当前时间。
因此,当您要销毁mother
时,您首先调用dependent: destroy
个依赖项,即enjoy_level
个touch: true
个对象,因为它们mother
您正在触及import React, { Component } from 'react';
import { Form, Layout } from 'antd';
const { Header, Footer, Sider, Content } = Layout;
export default class Login extends Component {
render () {
return (
<div>
<Layout>
<Header style={{backgroundColor: '#555555', height: '5vh'}}>header</Header>
<Layout>
<Content>main content</Content>
</Layout>
<Footer>footer</Footer>
</Layout>
</div>
)
}
}
对象返回{1}}因为它也会在destroy上更新它。
因此,第二个查询在当前场景中可能没用,但它们按计划工作。
答案 1 :(得分:0)
销毁父对象时,可以在ActiveRecord级别禁用触摸:
ActiveRecord::Base.no_touching do
mother.destroy
end