覆盖模型中的保存方法

Cyb*_*Mew 0 ruby ruby-on-rails mongoid

我是 Ruby/Rails 的新手,我想覆盖该save方法,这样我就可以在调用实际save方法之前对自己进行一些检查,但是,由于某种原因,我收到了此异常:

#<NoMethodError: undefined method `save' for true:TrueClass>
Run Code Online (Sandbox Code Playgroud)

这是我的模块和类的代码。

模块:

module OverrideSave

    def save
        super.save if some_condition_true
    end
  end
Run Code Online (Sandbox Code Playgroud)

班级:

class CardTransaction
  include Mongoid::Document
  include Mongoid::Timestamps::Created
  prepend OverrideSave

  field :type, type: String
  field :transaction_value, type: BigDecimal
  field :receipt_value, type: BigDecimal
  field :store_id, type: String

  belongs_to :card
end
Run Code Online (Sandbox Code Playgroud)

我不确定出了什么问题,有什么想法吗?

Mar*_*pka 5

为什么你试图调用save任何super(即save)返回?根据你的描述,你想要这样的东西:

def save
  # some additional work
  super
end
Run Code Online (Sandbox Code Playgroud)

  • _“你为什么要在 super(即 save)返回的任何东西上调用 save?”_ – 我想说 OP 只是想调用(被覆盖的)`save` 并且不知道 `super` _is_ 那个方法调用. (2认同)