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
类供应商
如上所述,使用销毁选项将销毁与该供应商关联的所有对象。如果您可以为此发布您的模型,那就太好了。添加了模型详细信息以获得更多澄清!又好又简单。谢谢