ruby-on-rails - 当 ruby​​ on rails 中存在多对多关系时如何销毁记录?

标签 ruby-on-rails ruby oracle

在我的应用程序中有食谱和配料,所以一个食谱可以有很多配料,一个配料可以用在很多食谱中,一切都很好,当我创建食谱时,有一个名为 Has_ingredient 的表,其中保存了每个食谱的每种配料.

问题是,现在当我尝试销毁配方时出现错误,因为我需要在删除配方之前销毁与该配方关联的 Has_ingredient 中的记录。

所以在我的模型中我创建了这样的东西

class Recipe < ActiveRecord::Base

    before_destroy :destroy_ingredents
    ....
    ....
    ....
    def destroy_ingredents

       HasIngredent.destroy(recipe_id: self.id)
    end

好吧,现在我得到这个错误:OCIERROR: ORA-00904。

所以现在问题不是 Rails,而是数据库(我使用的是 Oracle),但我很确定问题是我如何使用 destroy 方法,但我不知道如何正确使用它来删除与关联的 has_ingredent 表中的每条记录某些食谱

最佳答案

摧毁 child 的最好方法是使用dependent

因此在您的模型中,您将拥有:

class Recipe < ActiveRecord::Base
  has_many :ingredients, dependent: :destroy
end

关于ruby-on-rails - 当 ruby​​ on rails 中存在多对多关系时如何销毁记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34666902/

相关文章:

ruby - 正则表达式修改文本

ruby - Rails 4 忽略错误/异常并继续

java - 使用 JDBC 连接到数据库服务器的简单 Java 程序的执行时间随处变化

Oracle 最大时间戳 - 减去 45 分钟

sql - Rails Postgres 功能索引

ruby - 为什么我不能用 ruby 做这个?

ruby-on-rails - 片段缓存和 CSRF

sql - 如何同时插入两个表

ruby-on-rails - 在Ruby Paperclip GEM中获取模型中图像的宽度和高度

ruby-on-rails - 如何使用 rails3 将本地时区的日期保存到数据库?