Ruby:未定义的方法`delete';,同时删除父数据和子数据
我是一个新手程序员,基本上我试图从一个数据库表中删除一条记录,但是这个记录将被用于一个子表,它的组合主键同时从不同的表中删除这两条记录。Ruby:未定义的方法`delete';,同时删除父数据和子数据,ruby,postgresql,ruby-on-rails-3,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,
这是我需要从中删除子数据的表的类
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没有什么了解?我很抱歉,如果问题模棱两可,或者我没有清楚地解释自己,我通常在论坛上找到所有东西,没有必要问自己。任何帮助都将不胜感激:)很抱歉没有给出确切的答案。但我可以从这个答案中看出一个概念
class User < ActiveRecord::Base
has_many :fruits, dependent: :destroy
end
class Fruit < ActiveRecord::Base
belongs_to :user
end
class用户
因此,在上面的示例中,如果您删除一个用户,该用户的关联果实也将自动删除。如果我理解清楚,当您希望删除父项时,您希望删除与父项关联的子项?是,我需要一起删除所有内容ActiveRecord是我需要安装的一个新gem,因为我的所有类都没有使用它,它给了我一个错误“Unitized constant ActiveRecord”。如果我删除它抛出的部分“:dependent不映射到…”中的属性或关系,很抱歉您使用rails时遇到麻烦?很抱歉,我的答案不再适用。我的回答是具体的