覆盖Ruby on Rails中的保存

问题描述 投票:0回答:1

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

    User.name = "alex"
    User.save

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
ruby-on-rails ruby activerecord save override
1个回答
5
投票

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

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

def save(*args)
  # ...
  Multidb.use(:default) do
    super(*args)
  end
  # ...
end
© www.soinside.com 2019 - 2024. All rights reserved.