我的ActiveRecord关联设置正确吗? (简单留言板申请)

时间:2011-04-25 01:58:07

标签: ruby-on-rails ruby activerecord associations models

基本上我想要一个主题有很多帖子和帖子有很多评论。如果帖子被破坏,我希望它的评论被销毁。如果删除主题,我希望它的帖子和评论被删除。下面的代码是否实现了这一点?并且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宝石吗?这会让这更简单吗?感谢您阅读我的问题。非常感谢任何帮助。

1 个答案:

答案 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