在保存 ActiveRecord 关联时遇到问题,需要您的帮助 :)
我需要将文章合并功能添加到遗留代码。
预计将按以下方式工作:
- 将“源”文章的文本合并到“目标”文章。
- 检查“来源”的评论,如果有的话,将它们重新关联到“目标”。
- 销毁“源”文章。注释应保留并与“目标”相关联。
这是我的文章模型代码(为便于阅读而减少)。
class Article < Content
before_destroy :reload_associated_comments
has_many :comments, :dependent => :destroy, :order => "created_at ASC" do
def reload_associated_comments
unless self.comments.empty?
article = Article.find(@merge_with)
self.comments.each do |comment|
comment.article = article
article.save!
end
end
end
def merge_with(id)
@merge_with = id
article = Article.find(@merge_with)
if !article.nil?
text = article.body + body
article.body = text
article.save!
self.destroy
return article
end
nil
end
end
这是评论模型(也减少了):
class Comment < Feedback
belongs_to :article
end
问题是当我从before_destroy钩子返回时,没有任何东西保存到数据库中。我通过以下方式进行检查:
eval Article.find(target_article_id).comments
保存不会引发异常。我在这里缺少什么?
提前致谢!
这对我有用
def merge_with(id)
@merge_with = id
article = Article.find(@merge_with)
unless article.nil?
text = article.body + body
article.body = text
article.save!
reload_associated_comments
self.reload
self.destroy
return article
end
nil
end