Ruby:未定义的方法`delete',同时删除父数据和子数据

时间:2017-03-30 07:02:34

标签: ruby postgresql ruby-on-rails-3

我是一名新手程序员,基本上我正在尝试从数据库表中删除一条记录,但是这条记录将用于一个子表,其中一个组合主键从不同的表中获取。
这是我需要从中删除子数据的表的类。

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的内容? 如果问题含糊不清或者我没有清楚地解释自己,我很抱歉,我通常会在论坛上找到所有内容,而且没有必要问自己。任何帮助将不胜感激:)

1 个答案:

答案 0 :(得分:0)

很抱歉没有给出确切的答案。但我可以在这个答案中说出一个概念

class User < ActiveRecord::Base
  has_many :fruits, dependent: :destroy
end

class Fruit < ActiveRecord::Base
  belongs_to :user
end

因此,在上面的示例中,如果删除用户,该用户的关联成果也将自动删除。