我可以重新保存数据库中的条目吗?

时间:2014-11-29 22:49:50

标签: ruby-on-rails activerecord

我有一个rails项目,我最近决定在评论表中添加blog_id,以便您提取属于特定博客的所有评论。我面临的问题是我如何处理数据库中已有的评论?我可以这样做:

Comment.find_each(&:save)

我认为不是因为它不知道它最初属于哪个博客 - 即使关系已经更新说:博客有很多评论和评论属于博客

根据这种关系,我可以在rake任务中执行上述代码吗?

1 个答案:

答案 0 :(得分:1)

Comment.all.each do |comment|
    comment.blog = comment.post.blog
    comment.save
end

但这一切并非真的有必要。您可以在没有blog_id的情况下将评论分配给博客,只需通过以下内容:

blog.rb

has_many :posts
has_many :comments, through: :posts

post.rb

belongs_to :blog
has_many   :comments

comment.rb

belongs_to :post

def blog
    post.blog
end

这样,您将(每个案例):

@blog.posts
@blog.comments

@post.comments
@post.blog

@comment.post
@comment.blog