Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在删除前检查对象是否被引用?(多对多关系)_Ruby On Rails_Ruby_Ruby On Rails 3_Activeadmin - Fatal编程技术网

Ruby on rails 如何在删除前检查对象是否被引用?(多对多关系)

Ruby on rails 如何在删除前检查对象是否被引用?(多对多关系),ruby-on-rails,ruby,ruby-on-rails-3,activeadmin,Ruby On Rails,Ruby,Ruby On Rails 3,Activeadmin,我在RubyonRails这个世界上还是个新手。我有两个类,A和B,定义如下: class AClass < ActiveRecord::Base has_many :a_b_class end class ABClass < ActiveRecord::Base validates_presence_of :attr1, :attr2 belongs_to :a_class belongs_to :b_class attr_accessible :attr

我在RubyonRails这个世界上还是个新手。我有两个类,A和B,定义如下:

class AClass < ActiveRecord::Base
  has_many :a_b_class
end

class ABClass < ActiveRecord::Base
  validates_presence_of :attr1, :attr2

  belongs_to :a_class
  belongs_to :b_class

  attr_accessible :attr1,:attr2,:a_class, b_class
end

class BClass < ActiveRecord::Base
  validates_presence_of :attr4, :attr5

  has_many :a_b_class

  attr_accessible :attr4,:attr5
end
类AClass 我正在使用activeadmin管理数据库数据等。 问题是activeadmin允许我删除AClass(通过ABClass关系)对象引用的B类对象,因此当我进入视图时失败,因为视图尝试访问nil元素的attr1。如何向模型添加验证以避免删除引用对象


编辑:我纠正了这种关系,是一种多对多的关系

我认为你的关联在某个地方是错误的,首先纠正了这一点,例如文章有很多评论,所以评论有文章id,注释验证了:article\u id的存在,如果您删除了article,则应删除相应的注释,因为您需要“dependent=>:destroy”

类文章:销毁
结束

类注释我认为你的关联在某个地方是错误的,首先纠正,例如文章有很多注释,因此注释有文章id,注释有
验证:文章id
不是文章的存在,如果你删除了文章,相应的注释应该被删除,因为你需要'dependent=>:destroy'

类文章:销毁
结束

class Comment我不确定这是否能解决问题-但是你能尝试向BClass添加一个属性来标记它属于AClass吗

belongs_to :a_class
还有,你不能这么做:

validates_presence_of :b_class_id

由于可能有许多ID..

我不确定这是否能解决问题-但是您能否尝试向BClass添加一个“属于”属性以标记它属于AClass

belongs_to :a_class
还有,你不能这么做:

validates_presence_of :b_class_id
因为可能有很多ID