我正在使用gem acts_as_commentable_with_threading,我想在destroy方法中添加一些东西。目前,如果您删除评论并且有回复,则会删除评论并进行回复。我想保留此功能仅用于根评论,但不适用于孩子。所以,如果它是这样的
Comment 1
/ \
\ Comment 4
Comment 2
\
\
Comment 3
评论2,3和4都是1的孩子,但3也是2的孩子。我想这样做,如果你删除评论2,评论3仍然会在那里。但是,请保留它,以便删除注释1,然后删除其下的所有注释,因为注释1是根注释。所以我必须在gem中编辑destroy方法以允许这个。我该怎么做呢? (不是真的问如何做逻辑,而是在哪里可以编辑方法,但我也很感激逻辑方面的帮助)
答案 0 :(得分:1)
您可以通过monkey patching执行此操作,这主要涉及在另一个文件中定义类或模块的其他方面。我发现,放置它的好地方是 config / initializers 。
因此,如果你想覆盖A :: B类的destroy方法,你可以创建一个类似的文件:
require 'loads_a_b'
module A
class B
def destroy_with_child_preservation
# your code
end
alias_method_chain :destroy, :child_preservation
end
end
您可以通过调用destroy_without_child_preservation
来引用原始方法