基本上我想要一个主题有很多帖子和帖子有很多评论。如果帖子被破坏,我希望它的评论被销毁。如果删除主题,我希望它的帖子和评论被删除。下面的代码是否实现了这一点?并且has_one :topic
行是否必要?
topic.rb:
class Topic < ActiveRecord::Base
has_many :posts, :dependent => :destroy
end
post.rb:
class Post < ActiveRecord::Base
belongs_to :topic, :dependent => :destroy, :touch => true
has_one :topic
has_many :comments, :dependent => :destroy
end
comment.rb:
class Comment < ActiveRecord::Base
belongs_to :post, :dependent => :destroy, :touch => true
end
我应该使用Ancestry
宝石吗?这会让这更简单吗?感谢您阅读我的问题。非常感谢任何帮助。
答案 0 :(得分:1)
1)has_one :topic
是不必要的,belongs_to
你已经宣布了关联。
2):dependent => :destroy
按照你的要求进入has_many。如果你将它们放在belongs_to方面,你会在销毁其中一个帖子后销毁一个主题,留下孤儿很多其他帖子。
这是您正在寻找的代码:
topic.rb:
class Topic < ActiveRecord::Base
has_many :posts, :dependent => :destroy
end
post.rb:
class Post < ActiveRecord::Base
belongs_to :topic, :touch => true
has_many :comments, :dependent => :destroy
end
comment.rb:
class Comment < ActiveRecord::Base
belongs_to :post, :touch => true
end