ruby-on-rails - after_destroy 删除类别

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

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

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/

相关文章:

mysql - ClearDB 自增

ruby-on-rails - Rails - 用于 session 的 Cookie 或 Active Record 存储

javascript - Rails 4 - 来自公共(public)文件夹的样式表

ruby-on-rails - 在 before_create 中设置 bool 字段会停止创建吗?

ruby-on-rails - request.xhr CORS 布局失败

ruby-on-rails - Rails 使用 MS SQL Server 数据库

mysql - 在 Ruby on Rails 中在运行时构建表

ruby - 服务器日志中的 HIJACKED 是什么意思?

ruby-on-rails - 如何在rails中的FFMPEG转码中显示用户侧的进度?

ruby-on-rails - rails ( gem ): How do i include and render erb partials?