我是一名新手程序员,基本上我正在尝试从数据库表中删除一条记录,但是这条记录将用于一个子表,其中一个组合主键从不同的表中获取。
这是我需要从中删除子数据的表的类。
class Detalle_Mapa
include DataMapper::Resource
storage_names[:default] = 'detalle_ma'
property :clave_mapa, String, :length => 2, :required => true, :key => true
property :clave_asig, String, :length => 10, :required => true, :key => true
property :clave_cuatri, String, :length => 2, :required => true
belongs_to :mapa_curricular, 'Mapa_Curricular', :child_key => [:clave_mapa], :key => true
belongs_to :cuatrimestre, 'Cuatrimestre', :child_key => [:clave_cuatri], :key => true
belongs_to :asignatura, 'Asignatura', :child_key => [:clave_asig]
end
所以现在当我尝试从父表中删除数据时,它不会删除它,因为PK正在子表上用于其他数据。如果这是正常的SQL sintax它不会是一个大问题,但我很难在Ruby上找到解决方法。
这是删除未用作FK的数据时的基本方法。
delete '/deleteMapCurricular/:clave_mapa' do
@mapa = Mapa_Curricular.get(params[:clave_mapa])
if @mapa
@mapa.destroy
redirect '/catMapCurricular'
end
end
这是我试图删除子数据的方法之一,这显然不对......
Detalle_Mapa.where(:clave_mapa => [params[:clave_mapa]]).delete_all
是否有一种简单的方法可以从数据库中删除一堆我不知道的数据?或者我在Ruby上没有得到关于这个ActiveRecords的内容? 如果问题含糊不清或者我没有清楚地解释自己,我很抱歉,我通常会在论坛上找到所有内容,而且没有必要问自己。任何帮助将不胜感激:)
答案 0 :(得分:0)
很抱歉没有给出确切的答案。但我可以在这个答案中说出一个概念
class User < ActiveRecord::Base
has_many :fruits, dependent: :destroy
end
class Fruit < ActiveRecord::Base
belongs_to :user
end
因此,在上面的示例中,如果删除用户,该用户的关联成果也将自动删除。