我是 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。如何为模型添加验证以避免删除引用的对象?
已编辑:我纠正了这段关系,是多对多
答案 0 :(得分:1)
我认为您的关联在某处首先纠正错误,例如文章有很多评论,所以评论有article_id,评论有validates_presence_of :article_id
没有文章,如果删除文章,相应的评论应该删除,因为你需要'依赖=&GT;:消灭“
class Article <AR
has_many :comments,:dependent=>:destroy
end
class Comment <AR
belongs_to :article
attr_accessible :article_id,....
end
答案 1 :(得分:0)
我不确定这会解决问题 - 但您可以尝试将belongs_to属性添加到BClass以标记它属于AClass吗?
belongs_to :a_class
此外,你不能这样做:
validates_presence_of :b_class_id
因为可能有很多ID ..