ruby 在这种情况下,哪种语法是正确的?

oyjwcjzk  于 12个月前  发布在  Ruby
关注(0)|答案(2)|浏览(90)

我有一个叫做destroy_order_payment_detail的函数,我试图销毁一个依赖对象。它不起作用,那么这些语法中哪些是正确的?

has_one :order_payment_detail, inverse_of: :payment_order
accepts_nested_attributes_for :order_payment_detail, allow_destroy: true

before_destroy :destroy_order_payment_detail

private
    def destroy_order_payment_detail
      if :order_payment_detail.present?
        :order_payment_detail.destroy
      end
    end

还是这个没有:

private
    def destroy_order_payment_detail
      if order_payment_detail.present?
        order_payment_detail.destroy
      end
    end
zpjtge22

zpjtge221#

如果你想销毁依赖的order_payment_detail,有一个比写回调更好的方法,简单地像这样声明依赖:

has_one :order_payment_detail, inverse_of: :payment_order, dependent: :destroy

不需要before_destroy回调

tyu7yeag

tyu7yeag2#

当我试图销毁order_payment_detail时,ruby会寻找一个名为order_payment_detail. rb的模型,我发现了我的例子中的问题所在。但是模型的名称是payment_order_detail,所以我只需要重命名依赖项,现在它就像它应该做的那样销毁了。不好意思耽误你的时间了。

相关问题