我的代码在创建模型的新实例时自动创建类别。这是其中一个模型的代码。
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
关于如何解决这个问题有什么想法吗?
最佳答案
试试这个:
Category.find_by(name: self.title).destroy
请记住,destroy 将触发您触发的类别的任何回调,但 delete 不会
这就是 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
关于ruby-on-rails - after_destroy 删除类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36902670/