覆盖Ruby on Rails中的保存

Har*_*dhu 0 ruby activerecord overriding ruby-on-rails save

您好我想要覆盖ruby中的save方法但是这样做时我在保存带有一些更改的对象时会出现以下错误

    User.name = "alex"
    User.save
Run Code Online (Sandbox Code Playgroud)

ArgumentError:参数数量错误(1表示0)

我的代码如下

class ActiveRecord::Base

  def save()
      p "in My save\n"
      Multidb.use(:default) do
          p "calling super\n"
      super()
      end
      p "saved\n"
  end

end
Run Code Online (Sandbox Code Playgroud)

spi*_*ann 5

我认为覆盖公共ActiveRecordAPI的这种重要方法是一个可怕的想法.

但是如果你真的想要覆盖save那么你应该允许你的save方法接收与原始save方法相同的参数,并传递这些参数super.

def save(*args)
  # ...
  Multidb.use(:default) do
    super(*args)
  end
  # ...
end
Run Code Online (Sandbox Code Playgroud)