1

我对ruby​​ on rails世界很陌生。我有两个类,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

我正在使用activeadmin来管理数据库数据等。问题是activeadmin允许我删除由 AClass(通过 ABClass 关系)对象引用的 BClass 对象,因此当我进入http://example.com/ a_class视图失败,因为视图尝试访问nil元素的 attr1。如何向模型添加验证以避免删除引用的对象?

编辑:我纠正了关系,是多对多

4

2 回答 2

1

我认为您的关联在某个地方是错误的,首先纠正例如文章有很多评论,所以评论有article_id,而评论validates_presence_of :article_id没有文章,如果您删除文章,则应删除相应的评论,因为您需要'dependent=>:destroy"

class Article <AR
 has_many :comments,:dependent=>:destroy
end

class Comment <AR
 belongs_to :article
 attr_accessible :article_id,....
end
于 2012-09-13T13:06:01.923 回答
0

我不确定这是否能解决问题 - 但您可以尝试向 BClass 添加belongs_to 属性以标记它属于AClass 吗?

belongs_to :a_class

此外,你不能这样做:

validates_presence_of :b_class_id

因为可能有很多ID..

于 2012-09-13T13:06:22.297 回答