after_destroy删除类别

时间:2016-04-27 23:30:46

标签: ruby-on-rails ruby ruby-on-rails-4

我的代码在创建模型的新实例时自动创建类别。以下是其中一个模型的代码。

.encode('base64')

创建有效,但破坏给了我这个错误

class Grow < ActiveRecord::Base
belongs_to :category

after_create do
  Category.create(name: self.title)
end

before_destroy do
  Category.destroy(name: self.title)
end

关于如何解决这个问题的任何想法?

1 个答案:

答案 0 :(得分:4)

试试这个:

Category.find_by(name: self.title).destroy

请记住,destroy会触发你触发的类别上的任何回调,但删除不会

这就是ActiveRecord(destroy)正在做的事情:

# File activerecord/lib/active_record/base.rb, line 2614
  def destroy
    unless new_record?
      connection.delete(
        "DELETE FROM #{self.class.quoted_table_name} " +
        "WHERE #{connection.quote_column_name(self.class.primary_key)} = #{quoted_id}",
        "#{self.class.name} Destroy"
      )
    end

    @destroyed = true
    freeze
  end