2016-04-27 74 views
1

我的代碼在創建模型的新實例時自動創建類別。以下是其中一個模型的代碼。after_destroy刪除類別

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 

的創建工作,但摧毀給了我這個錯誤

SQLite3::SQLException: no such column: id.name: SELECT "categories".* 
     FROM "categories" WHERE "id"."name" = 'My very first grow room' LIMIT 1 

我如何能解決這個問題的任何想法?

回答

4

試試這個:

Category.find_by(name: self.title).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 
+0

這很好,謝謝你的快速反應!我使用了刪除選項,因爲當我只想從記錄中刪除它時,我不需要觸發額外的回調。 – mGarsteck