在我的应用程序中有食谱和配料,所以一个食谱可以有很多配料,一个配料可以用在很多食谱中,一切都很好,当我创建食谱时,有一个名为 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/