Validation 销毁或销毁所有相关文件前进行检查?轨道4

Validation 销毁或销毁所有相关文件前进行检查?轨道4,validation,ruby-on-rails-4,relation,destroy,Validation,Ruby On Rails 4,Relation,Destroy,我目前有一个供应商模型,它可以作为我的用户的路由器。此供应商模型链接到供应商拥有的位置以及活动 一旦用户被创建,它将被赋予一个供应商关联,该关联基本上解除了与该供应商相关的位置和活动的锁定 现在,我的问题是,当一个供应商被“摧毁”时,有没有一种方法可以摧毁与之相关的所有地点、活动和用户?如果没有,是否有一种方法可以运行验证,如果供应商被销毁,则检查数据库中的关联,如果发现记录,则不允许销毁操作 我问这个问题的原因是,如果我销毁了供应商,用户就没有位置,活动也没有关联的供应商,这基本上会使我的应用

我目前有一个供应商模型,它可以作为我的用户的路由器。此供应商模型链接到供应商拥有的位置以及活动

一旦用户被创建,它将被赋予一个供应商关联,该关联基本上解除了与该供应商相关的位置和活动的锁定

现在,我的问题是,当一个供应商被“摧毁”时,有没有一种方法可以摧毁与之相关的所有地点、活动和用户?如果没有,是否有一种方法可以运行验证,如果供应商被销毁,则检查数据库中的关联,如果发现记录,则不允许销毁操作

我问这个问题的原因是,如果我销毁了供应商,用户就没有位置,活动也没有关联的供应商,这基本上会使我的应用程序崩溃

用户模型

belongs_to :vendor #user can only have one vendor
has_many :locations, :through => :vendor
has_many :clients, :through => :vendor
has_many :campaigns, :through => :vendor  
belongs_to :vendor
has_many :campaigns
belongs_to :location
belongs_to :user
belongs_to :vendor
has_one :client
has_many :locations #vendor can own many locations 
has_many :clients #vendor can have many clients. Allows multiple employees to see client list
has_many :campaigns #vendor can have many campaigns. Allows multiple employees to see campaigns
位置模型

belongs_to :vendor #user can only have one vendor
has_many :locations, :through => :vendor
has_many :clients, :through => :vendor
has_many :campaigns, :through => :vendor  
belongs_to :vendor
has_many :campaigns
belongs_to :location
belongs_to :user
belongs_to :vendor
has_one :client
has_many :locations #vendor can own many locations 
has_many :clients #vendor can have many clients. Allows multiple employees to see client list
has_many :campaigns #vendor can have many campaigns. Allows multiple employees to see campaigns
活动模式

belongs_to :vendor #user can only have one vendor
has_many :locations, :through => :vendor
has_many :clients, :through => :vendor
has_many :campaigns, :through => :vendor  
belongs_to :vendor
has_many :campaigns
belongs_to :location
belongs_to :user
belongs_to :vendor
has_one :client
has_many :locations #vendor can own many locations 
has_many :clients #vendor can have many clients. Allows multiple employees to see client list
has_many :campaigns #vendor can have many campaigns. Allows multiple employees to see campaigns
供应商型号

belongs_to :vendor #user can only have one vendor
has_many :locations, :through => :vendor
has_many :clients, :through => :vendor
has_many :campaigns, :through => :vendor  
belongs_to :vendor
has_many :campaigns
belongs_to :location
belongs_to :user
belongs_to :vendor
has_one :client
has_many :locations #vendor can own many locations 
has_many :clients #vendor can have many clients. Allows multiple employees to see client list
has_many :campaigns #vendor can have many campaigns. Allows multiple employees to see campaigns

简而言之,您可以通过在您的关联上使用
dependent
选项来执行类似操作。可以使用以下任一方法:

:destroy-销毁调用其destroy方法的每个关联对象

:delete_all-删除所有关联对象,而不调用其销毁方法

更新

考虑到您的模型,您应该执行以下操作:

class Vendor < ActiveRecord::Base 

  has_many :locations, dependent: :destroy
  has_many :clients, dependent: :destroy 
  has_many :campaigns, dependent: :destroy
end 
类供应商

如上所述,使用销毁选项将销毁与该供应商关联的所有对象。

如果您可以为此发布您的模型,那就太好了。添加了模型详细信息以获得更多澄清!又好又简单。谢谢