在我的应用程序中有配方和配料,所以配方可以有很多成分,一种成分可以用于许多食谱,一切都很好,当我创建食谱时,有一个名为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表中与之关联的每条记录某些食谱
答案 0 :(得分:3)
摧毁孩子的最佳方法是使用dependent
所以在你的模型中,你会得到:
class Recipe < ActiveRecord::Base
has_many :ingredients, dependent: :destroy
end
答案 1 :(得分:2)
正如@pauloancheta建议的那样,用铁轨留下这些是更好的方法。但是,如果您想知道正确的语法,
HasIngredent.find_by(recipe_id: self.id).destroy