2012-09-13 53 views
1

我是相当新的红宝石轨道上世界。我有两个类,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时,视图失败,因为该视图尝试访问元素的attr1。如何将验证添加到模型以避免删除引用的对象?

EDITED:我纠正的关系,是一个多对多

回答

1

我觉得你的公会是错误的地方第一rectifie即如文章有很多评论,所以评论有article_id的,并评论了validates_presence_of :article_id不文章,如果你删除的文章各自的意见,你需要“依赖=>应该有删除:消灭”

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

class Comment <AR 
belongs_to :article 
attr_accessible :article_id,.... 
end 
+0

没错抱歉,我抄错了。 – McSas

0

我不知道这会解决这个问题 - 但你可以尝试添加一个belongs_to的attribu是否要BClass标明它属于AClass?

belongs_to :a_class 

Alsoo,你不能做到这一点:

validates_presence_of :b_class_id 

,因为可能有许多IDS ..

相关问题